javascript - Chrome Websockets CORS 政策

标签 javascript google-chrome websocket cors

我在 Chrome 中打开 websocket 时遇到问题。似乎在 websockets 的 chrome 中有一些 CORS 策略。

如果我在 www.example.com 上并尝试在 api.example.com 上打开 websocket,它会在控制台网络选项卡上显示挂起,并将触发错误消息 WebSocket connection to ' wss://api.example.com' 失败:连接在收到握手响应之前关闭。如果我查看服务器,我看不到正在发出的 Web 套接字连接请求,因此没有选项请求可以响应,也没有设置 Access-Control-Allow-Origin header 的能力。 但是,如果我首先向 api.example.com 发出请求,浏览器会将我重定向回 www.example.com,它会正常工作。

是否需要在 chrome 中对 websocket 请求使用相同的来源?

注意:此问题仅适用于 chrome。

最佳答案

WebSocket 没有浏览器强制执行 CORS。这里有两处可能出错的地方(假设您同时使用 HTTPS 和 WSS):

  • 服务器 执行OriginOrigin HTTP header 由浏览器设置为包含打开 WebSocket 连接的 JavaScript 的 HTML 页面的来源。服务器可以检查该 header 并拒绝。但是既然你说其他浏览器可以工作(哪个?),这不太可能
  • 由于您使用的是 wss,因此服务器证书必须完全有效,并且无需任何用户交互即可被浏览器接受。是这样吗?

关于javascript - Chrome Websockets CORS 政策,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22644392/

相关文章:

java - Netty:如何将查询字符串与 websocket 一起使用?

javascript - 是否有任何特别注意简洁的 JSON pretty-print ?

javascript - 单击从 JS 动态加载的框后复制到剪贴板

javascript - XMLHttpRequest 和 Chrome 开发者工具说的不是同一件事

css - 无法在 chrome 中编辑 CSS STYLE 属性(变灰和屏蔽)

javascript - 在 WebSocket.send() 之后修改缓冲区是否安全?

javascript - Window.unload 触发后卸载

javascript - 如何为新库编写 typescript 定义文件?

google-chrome - Selenium Webdriver - SessionNotCreatedError

javascript - 什么是 NaCl 套接字 API?