Firefox не может установить соединение с WSS

У меня есть хост-сервер веб-сокетов с веб-сокетами Spring Boot. Safari, Chrome и Edge могут подключаться, а Firefox — нет. Ошибка:

Firefox может связываться с сервером в wss://MY_DOMAIN/growth-websocket/933/omw002tp/websocket aufbauen.

(= "Firefox не может установить соединение с сервером по адресу wss://...")

Я прокси WebSockets с Apache:

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

Спасибо за вашу помощь!


person Timo Zikeli    schedule 02.08.2017    source источник
comment
Вы пробовали это решение? Это может сработать для вас. stackoverflow.com/ вопросы/23775215/   -  person Kyordhel    schedule 24.11.2017
comment
Здесь та же проблема, за исключением того, что я использую nginx и node.js с веб-сокетами npm 'ws'.   -  person Nodeocrat    schedule 18.12.2017


Ответы (1)


У меня это получилось на моем прокси Docker OIDC после нескольких попыток. Хитрость заключается в том, чтобы позволить ему работать, когда проксируемый URI для веб-сокетов и обычного HTTP одинаков. Если бы он был различен, мы могли бы просто иметь перед ним другую комбинацию ProxyPass/ProxyPassReverse.

Для поддержки этого движок Rewrite используется для определения того, установлены ли заголовки Upgrade и Conntextion и, если да, прокси-сервера соответственно. Второй сложный момент [хотя я не уверен, почему] заключается в том, чтобы поместить его после директив ProxyPass и ProxyPassReverse.

Вот код из 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]

Я смог успешно проверить это с помощью сервера ноутбуков Jupyter, который использует веб-сокеты.

person Archimedes Trajano    schedule 02.05.2021