小编Sni*_*ady的帖子

Spring WebSocket与SockJS连接到不同的域

Spring中的WebSockets是一个相当新的话题,我很累.

我的问题是连接到来自不同域的服务,我正在使用Lineman构建前端端和Spring Boot做后端端,我将这些应用程序放在两个不同的端口上:8000和8080在localhost上.

我遇到了'Access-Control-Allow-Origin'标题的问题但我通过在服务器端添加一个过滤器来解决它,该过滤器将允许的原点添加到标题中.在此之后我开始在连接上收到以下错误:

GET http://localhost:8080/socket/info 403 (Forbidden)
AbstractXHRObject._start @ sockjs-0.3.4.js:807
(anonymous function) @sockjs-0.3.4.js:841
Run Code Online (Sandbox Code Playgroud)

我在项目中没有Spring Security,因此这不是授权问题,错误指向sockJS:that.xhr.send(payload); - 从未定义有效负载.我尝试过但无法找到可能开始的呼叫根.

我想在设置连接时是否需要向SockJS和Stomp添加一些额外的信息,但是这个工具的两个wiki页面中没有太多的示例和注释.

你会发现Bellow连接JS代码.

var socket = new SockJS("http://localhost:8080/socket");
client = Stomp.over(socket);

client.connect({'login': BoatsGame.userName,
                    'passcode': 'guest'},
            function (frame) {
....

The Server Side has a MessageBroker configured :    


@Configuration
@EnableWebSocketMessageBroker
public class MessageBrokerConfig extends AbstractWebSocketMessageBrokerConfigurer {

@Bean
public ServletServerContainerFactoryBean createWebSocketContainer() {
     ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean();
     container.setMaxTextMessageBufferSize(8192);
     container.setMaxBinaryMessageBufferSize(8192);
     return container;
}

@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
     //config.enableStompBrokerRelay("/queue", "/topic");
     config.enableSimpleBroker("/queue", "/topic","/user");
     config.setApplicationDestinationPrefixes("/BoatBattleGame");
}

@Override …
Run Code Online (Sandbox Code Playgroud)

spring websocket http-status-code-403 sockjs

25
推荐指数
3
解决办法
3万
查看次数

标签 统计

http-status-code-403 ×1

sockjs ×1

spring ×1

websocket ×1