前言
- socket.io 项目搭建好了,相关的代码案例在上篇文档由提到;
- 最后需要集成到我们公司的项目中,目前我们公司使用的是spring Cloud gateway 网关,注册中心和配置中心使用的是nacos;解决了socket.io和gateway不通问题;(解决方案按我上篇文档)
- 最后配置好了也通信了,发现报了CORS 跨域!!!
说说遇到的问题过程和解决思路
1. 发现问题:
排查了好久,也没有发现这个问题,
隔天发现请求头出现了两个【Access-Control-Allow-Origin:】
2. 百度chatgpt询问:(方法在结尾)
为了解决这个问题,你需要确保服务器端的响应头中只包含一个有效的 Access-Control-Allow-Origin 值
3. 问题分析
原来我们项目目前网关那边做了跨域处理,而且拦截范围有点广
在看了看java【com.corundumstudio.socketio】源码分析
● 方法地址: com.corundumstudio.socketio.handler.EncoderHandler#addOriginHeaders
● 该方法强制进行跨域处理;已在gihub源码提了issue,建议添加可配可选择
4. 解决方案:
既然com.corundumstudio.socketio. jar 调整不了,就调整网关的跨域,跳过该websocket请求,不需要【/**】
总结:
● 有什么更改好的解决方案,欢迎共同交流探讨;
● 引流一波关注
● 有什么问题的话,留言讨论(看到就回),或者可以通过公众号后台留言交流
● chatgpt相关了解可以通过关注公众号回复【chatgpt】即可获得