Firefox 无法建立到 WSS 的连接

Posted

技术标签:

【中文标题】Firefox 无法建立到 WSS 的连接【英文标题】:Firefox can't establish a connection to WSS 【发布时间】:2017-08-02 19:29:22 【问题描述】:

我有一个带有 Spring Boot Websockets 的 websocket 服务器主机。 Safari、Chrome 和 Edge 可以连接,但 Firefox 不能。错误:

Firefox kann keine Verbindung zu dem Server unter wss://MY_DOMAIN/growth-websocket/933/omw002tp/websocket aufbauen。

(= "Firefox 无法在 wss://... 处建立与服务器的连接")

我正在使用 Apache 代理 WebSocket:

RewriteEngine on
RewriteCond %HTTP:UPGRADE ^WebSocket$ [NC]
RewriteCond %HTTP:CONNECTION ^Upgrade$ [NC]
RewriteRule .* ws://localhost:4567%REQUEST_URI [P]

感谢您的帮助!

【问题讨论】:

你试过这个解决方案了吗?它可能对你有用。 ***.com/questions/23775215/… 这里有同样的问题,除了我使用 nginx 和 node.js 和 npm 'ws' websockets。 【参考方案1】:

经过几次尝试后,我的Docker OIDC proxy 得到了这个工作。棘手的一点是允许它在 websockets 的代理 URI 和普通 HTTP 相同时工作。如果它是不同的,我们可以简单地在它前面加上另一个 ProxyPass/ProxyPassReverse 组合。

为了支持这一点,Rewrite 引擎用于检测是否设置了 UpgradeConntextion 标头,如果设置了相应的代理。第二个棘手的问题 [虽然我不确定为什么] 是把它放在 ProxyPassProxyPassReverse 指令之后。

这是来自https://github.com/trajano/docker-oidc-proxy/blob/master/oidc-proxy.conf的代码

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
LoadModule rewrite_module modules/mod_rewrite.so

...

ProxyPass "/" "http://$SERVICE_NAME:$SERVICE_PORT/"
ProxyPassReverse "/" "http://$SERVICE_NAME:$SERVICE_PORT/"

ProxyPreserveHost On
ProxyVia On

RewriteEngine on
RewriteCond %HTTP:UPGRADE ^WebSocket$ [NC]
RewriteCond %HTTP:CONNECTION ^Upgrade$ [NC]
RewriteRule .* ws://$SERVICE_NAME:$SERVICE_PORT%REQUEST_URI [P]

我能够通过使用 Web Sockets 的 Jupyter 笔记本服务器成功验证这一点。

【讨论】:

【参考方案2】:

这个答案来晚了,但可能会帮助其他有类似问题的人。

我创建了一个类似的问题并提供了两个不同的答案,都按预期工作。一个答案是关于如何配置 Apache 代理以使 ws:// 在 https 上工作,另一个则告诉如何生成自签名证书以便在不使用代理的情况下使用 HTTPS 和 WSS 工作而不会出现问题。

Can't establish a connection with javascript to a secure websocket server

请仔细阅读我留下的cmets。

【讨论】:

以上是关于Firefox 无法建立到 WSS 的连接的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MQTT 连接到 wss?

WebSocket/Node.js 帮助:无法建立到 wss://domain:8080 的连接 - 不是特定于浏览器的

使用多域 SSL SAN 证书无法在 Chrome 中建立 wss websocket 连接

无法连接到 wss://(连接建立错误:net::ERR_CONNECTION_CLOSED)

Websocket wss 连接在本地主机上的 Firefox 89 中不起作用

WSS over Secure SSL 连接仅在 FireFox 上失败,错误 1006