Browse Source

Merge pull request #671 in CORE/base-third from release/10.0 to bugfix/10.0

* commit '54ca67557eada8e7782b21ae118cfd6da54b0d80':
  无JIRA任务 WebSocket支持将用户名和token放在Header里 代码修改
  无JIRA任务 WebSocket支持将用户名和token放在Header里
bugfix/10.0
superman 4 years ago
parent
commit
5e53287f9a
  1. 12
      fine-socketio/src/main/java/com/fr/third/socketio/Configuration.java
  2. 15
      fine-socketio/src/main/java/com/fr/third/socketio/handler/EncoderHandler.java

12
fine-socketio/src/main/java/com/fr/third/socketio/Configuration.java

@ -89,6 +89,8 @@ public class Configuration {
private boolean randomSession = false; private boolean randomSession = false;
private String accessControlAllowHeaders = null;
public Configuration() { public Configuration() {
} }
@ -155,6 +157,8 @@ public class Configuration {
setHttpCompression(conf.isHttpCompression()); setHttpCompression(conf.isHttpCompression());
setWebsocketCompression(conf.isWebsocketCompression()); setWebsocketCompression(conf.isWebsocketCompression());
setRandomSession(conf.randomSession); setRandomSession(conf.randomSession);
setAccessControlAllowHeaders(conf.getAccessControlAllowHeaders());
} }
public JsonSupport getJsonSupport() { public JsonSupport getJsonSupport() {
@ -584,4 +588,12 @@ public class Configuration {
public void setRandomSession(boolean randomSession) { public void setRandomSession(boolean randomSession) {
this.randomSession = randomSession; this.randomSession = randomSession;
} }
public String getAccessControlAllowHeaders() {
return accessControlAllowHeaders;
}
public void setAccessControlAllowHeaders(String accessControlAllowHeaders) {
this.accessControlAllowHeaders = accessControlAllowHeaders;
}
} }

15
fine-socketio/src/main/java/com/fr/third/socketio/handler/EncoderHandler.java

@ -15,6 +15,7 @@
*/ */
package com.fr.third.socketio.handler; package com.fr.third.socketio.handler;
import static com.fr.third.springframework.util.StringUtils.isEmpty;
import static io.netty.handler.codec.http.HttpVersion.HTTP_1_1; import static io.netty.handler.codec.http.HttpVersion.HTTP_1_1;
import java.io.IOException; import java.io.IOException;
@ -121,7 +122,7 @@ public class EncoderHandler extends ChannelOutboundHandlerAdapter {
.add(HttpHeaderNames.ACCESS_CONTROL_ALLOW_HEADERS, HttpHeaderNames.CONTENT_TYPE); .add(HttpHeaderNames.ACCESS_CONTROL_ALLOW_HEADERS, HttpHeaderNames.CONTENT_TYPE);
String origin = ctx.channel().attr(ORIGIN).get(); String origin = ctx.channel().attr(ORIGIN).get();
addOriginHeaders(origin, res); addOriginAndAllowHeaders(origin, res);
ByteBuf out = encoder.allocateBuffer(ctx.alloc()); ByteBuf out = encoder.allocateBuffer(ctx.alloc());
sendMessage(msg, ctx.channel(), out, res, promise); sendMessage(msg, ctx.channel(), out, res, promise);
@ -143,7 +144,7 @@ public class EncoderHandler extends ChannelOutboundHandlerAdapter {
} }
String origin = channel.attr(ORIGIN).get(); String origin = channel.attr(ORIGIN).get();
addOriginHeaders(origin, res); addOriginAndAllowHeaders(origin, res);
HttpUtil.setContentLength(res, out.readableBytes()); HttpUtil.setContentLength(res, out.readableBytes());
@ -185,19 +186,25 @@ public class EncoderHandler extends ChannelOutboundHandlerAdapter {
sendMessage(errorMsg, ctx.channel(), encBuf, "application/json", promise, HttpResponseStatus.BAD_REQUEST); sendMessage(errorMsg, ctx.channel(), encBuf, "application/json", promise, HttpResponseStatus.BAD_REQUEST);
} }
private void addOriginHeaders(String origin, HttpResponse res) { private void addOriginAndAllowHeaders(String origin, HttpResponse res) {
if (version != null) { if (version != null) {
res.headers().add(HttpHeaderNames.SERVER, version); res.headers().add(HttpHeaderNames.SERVER, version);
} }
if (origin != null) { if (origin != null) {
String configOrigin = configuration.getOrigin(); String configOrigin = configuration.getOrigin();
if (configOrigin != null && !"".equals(configOrigin) && !configOrigin.contains(origin)) { if (!isEmpty(configOrigin) && !configOrigin.contains(origin)) {
throw new IllegalArgumentException(); throw new IllegalArgumentException();
} }
res.headers().add(HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN, origin); res.headers().add(HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN, origin);
res.headers().add(HttpHeaderNames.ACCESS_CONTROL_ALLOW_CREDENTIALS, Boolean.TRUE); res.headers().add(HttpHeaderNames.ACCESS_CONTROL_ALLOW_CREDENTIALS, Boolean.TRUE);
} }
String allowHeaders = configuration.getAccessControlAllowHeaders();
if (!isEmpty(allowHeaders)) {
res.headers().add(HttpHeaderNames.ACCESS_CONTROL_ALLOW_HEADERS, configuration.getAccessControlAllowHeaders());
}
} }
@Override @Override

Loading…
Cancel
Save