SpringBoot 整合 netty-socketio 的过程中,后端想通过前端发送的 websocket 请求头中携带的 token 来决定是否允许连接。
前端使用的是 socket.io ,查看了它的官网,发现:
意思是说:在浏览器环境下,extraHeaders 选项在请求头中添加自定义的字段是会被忽略的,因为浏览器的 WebSocket API 不支持,在 node.js 和 react 中是可以的。
我就想,既然自定义的字段会被忽略,那我将 token 放在 cookie 中不就可以了:
但是,没用,后端获取到的 cookie 没有 token 信息。
在 github 上 socketIo 项目中发现:
意思是:
如果你仅仅使用 websockets ,目前没有好的替代方法在请求头中携带自定义的字段,如果用 HTTP 长轮询可以。
结论就是: 前端的 socketIo 框架不支持在 websocket 的请求头中携带自定义的字段,所以,我将 token 信息放在 websocket 请求的 url 参数中:
SpringBoot 整合 netty-socketio 请求头问题
最新推荐文章于 2024-09-25 14:57:41 发布