websocket遇到的疑难杂症
开发中遇到的问题
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的拦截器,