Firefox无法建立与WSS的连接

时间:2017-08-02 19:29:23

标签: security firefox websocket wss

我有一个带有Spring Boot Websockets的websocket服务器宿舍。 Safari,Chrome和Edge可以连接,但Firefox无法连接。错误:

  

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

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

我用Apache代理WebSockets:

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

经过几次尝试后,我在我的 Docker OIDC proxy 上完成了这项工作。棘手的一点是当 websockets 和普通 HTTP 的代理 URI 相同时允许它工作。如果它是不同的,我们可以简单地在它之前添加另一个 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 套接字的 Jupyter 笔记本服务器成功验证这一点。