websocket遇到的疑难杂症

330

开发中遇到的问题

failed: Error during WebSocket handshake: Unexpected response code: 403

  • 后台websocket没问题,但是属于同域进行操作,但是跨域,也就是前后端分离死活报这个错误。

解决方案

@Configuration
@EnableWebMvc
@EnableWebSocket
public class WebSocketConfig extends WebMvcConfigurerAdapter implements WebSocketConfigurer {
    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
      //注册 系统通知socket服务
        registry.addHandler(systemInfoSocketHandler(),"/systemInfoSocketServer").addInterceptors(new SystemInfoSocketHandshakeInterceptor()).setAllowedOrigins("*");
        registry.addHandler(systemInfoSocketHandler(), "/sockjs/systemInfoSocketServer").addInterceptors(new SystemInfoSocketHandshakeInterceptor()).setAllowedOrigins("*")
                .withSockJS();
    }

    @Bean
    public WebSocketHandler systemInfoSocketHandler(){
        return new SystemInfoSocketHandler();
    }
}

  • 重点是在这一句.setAllowedOrigins("*");不然就会被Spring拦截,Spring默认会给一个OriginHandshakeInterceptor的拦截器,