我最近开始在 chrome 上遇到这个问题,我无法连接到托管在不同域下的 websocket。
示例用例:
考虑一个由负载均衡器前端的域 -> lb.com,具有两个数据中心 -> lb-dc1 和 lb-dc2。应用程序页面由 lb.com 托管,但此页面中的代码将创建一个 Web 套接字连接到 lb-dc1 或 lb-dc2。
这在 firefox/safari 上工作正常,但在 chrome 上此连接失败。
您也可以看到这种行为
https://www.websocket.org/echo.html
测试套接字连接在 chrome 上会失败(我使用的是最新的 91.0 版本),而在 Firefox 上却可以工作。
我有一个 nginx 代理来传递 WSS 请求..它看起来像这样
location /socket {
proxy_pass http://<my-service>:8080/socket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_buffering off;
proxy_ignore_client_abort off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_read_timeout 86400;
break;
}
也许已经晚了,但可能对其他人有帮助。花了一整天后,清除 cookie 对我有帮助(或者只是启动一个新的 Chrome 实例)。这是一场噩梦
就我而言,这只是 AdBlock。禁用它解决了问题