Chrome Websockets CORS政策

Jos*_*son 6 javascript google-chrome websocket cors

我在Chrome中打开websocket时遇到了麻烦.似乎在chrome中有一些针对websockets的CORS策略.

如果我在www.example.com上并尝试在api.example.com上打开websocket,它会在控制台网络选项卡上显示挂起,并将通过消息触发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.

obe*_*tet 12

没有浏览器强制使用WebSocket的CORS.以下是可能出错的两件事(假设您同时使用HTTPS和WSS):

  • 服务器强制执行的Origin.所述OriginHTTP标头是由浏览器到包含被打开WebSocket连接JavaScript的HTML页面的原点设置.服务器可以检查该标头并拒绝.但既然你说其他浏览器正在运行(哪个?),这是不太可能的
  • 因为您正在使用wss,服务器证书必须完全有效,并且浏览器可以接受,而无需任何用户交互.是这样的吗?

  • 如上所述,CORS不适用于WebSocket. (2认同)

Jos*_*son 5

我又遇到了这个问题。我仍然没有弄清楚原因,但是OPTIONS首先向子域发出(或任何其他)请求允许打开连接。

这似乎只是 wss 连接的问题,并且已经在多个域和证书中出现。

  • 这是因为 websocket 需要在升级到 websocket 之前首先建立 http 连接吗? (3认同)