解决Nginx转发Websocket502错误

环境:前端通过Nginx转发Websocket请求到Tomcat,后端采用的Spring Websocket方式实现。

现象:用户连不上Websocket,查看开发者工具中的Network发现,Websocket链接状态都是502,并不断尝试重新链接。且该现象未找到任何规律,在某些用户浏览器中正常,某些情况下又不能访问。

定位:查看Nginx日志发现有“upstream prematurely closed connection while reading response header from upstream ”相关错误。查看Tomcat访问日志发现Websocket的请求全部返回了403,说明是没有权限访问。

解决:以“Websocket 403”为关键字Google后发现,应该是SpringWebsocket跨域默认拦截的问题,在WebsocketConfig中注册Websocket服务时加上

setAllowedOrigins("*")

即如下:

registry.addHandler(xxxHandler(), "/xxxHandler.do").addInterceptors(new xxxInterceptor()) https://yeapharmacy.com/f....setAllowedOrigins("*");

问题解决。

此条目发表在技术分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。