我在AWS中的应用程序负载均衡器后面有一组实例 . 服务器运行客户端可以连接的 socket.io 服务器 .

要启动新的 socket.io 服务器,将对在该实例上运行的Web服务器发出HTTPS请求 . 我've configured application level sticky sessions, so this web server sends a response which includes a cookie that'用于未来的粘性会话 .

我遇到的问题是 socket.io-client ,我允许使用 extraHeaders API设置 cookie 标头,因为它是浏览器中 XMLHTTPRequest 的禁止标头 .

This architecture works if I'm connecting to the server via node ,因为 XMLHTTPRequest 限制不适用且 socket.io-client 所做的握手能够发送负载均衡器用于将连接分配给正确实例的cookie .

有办法:

  • 规避禁止的 Headers 限制(不太可能)

  • 将cookie作为非"cookie"标头传递,然后在标头到达负载 balancer 器之前对其进行转换

  • 使用非基于cookie的粘性会话方法

非常感谢!