我在 Chrome 中打开 websocket 时遇到问题。似乎在 websockets 的 chrome 中有一些 CORS 策略。
如果我在 www.example.com 上并尝试在 api.example.com 上打开 websocket,它会在控制台网络选项卡上显示 pending,并将触发 onerror 消息 WebSocket connection to 'wss://api.example.com' failed: Connection closed before receiving a handshake response
。如果我查看服务器,我看不到正在发出的 Web 套接字连接请求,因此没有选项请求可以响应,也没有设置 Access-Control-Allow-Origin 标头的能力。但是,如果我首先向 api.example.com 发出请求,浏览器会将我重定向回 www.example.com,它会正常工作。
您是否需要在 chrome 中对 websocket 请求使用相同的来源?
注意:此问题仅适用于 chrome。
原文由 Josh Wilson 发布,翻译遵循 CC BY-SA 4.0 许可协议
我又遇到了这个问题。我仍然没有弄清楚为什么,但是首先向子域发出
OPTIONS
(或任何其他)请求允许打开连接。这似乎只是 wss 连接的问题,并且已经出现在多个域和证书中。