Firefox无法与WSS建立连接

9

我有一个使用Spring Boot Websockets托管的websocket服务器。Safari、Chrome和Edge可以连接,但Firefox无法连接。错误信息如下:

Firefox无法建立到wss://MY_DOMAIN/growth-websocket/933/omw002tp/websocket的服务器连接。

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

我正在使用Apache代理WebSockets:

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

感谢您的帮助!

你尝试过这个解决方案吗?它可能适用于你。 https://dev59.com/JWAg5IYBdhLWcg3wSpTD - Kyordhel
1
我也遇到了同样的问题,只不过我是使用nginx和node.js以及npm的'ws' websockets。 - Nodeocrat
2个回答

2
我在几次尝试后,终于在我的Docker OIDC代理上让它工作了。棘手的地方在于允许它在Websockets和普通HTTP的代理URI相同时工作。如果它是不同的,我们可以在它之前简单地再加上另一个ProxyPass/ProxyPassReverse组合。
为了支持这一点,使用Rewrite引擎来检测是否设置了UpgradeConnection标头,如果设置了,则相应地进行代理。第二个棘手的部分[虽然我不确定为什么]是将其放在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笔记本服务器进行验证。

0

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

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

无法与安全的WebSocket服务器建立连接

请仔细阅读我在那里留下的评论。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接