Сбой подключения WebSocket в Chrome без SSL
я настраиваю WebSocket между стандартной веб-страницей и Tomcat v7.0.62 сервер. Соединение отлично работает с Tomcat SSL включен / выключен на Firefox, Edge и IE11. Однако в Chrome (v66.03), websocket подключается только тогда, когда я включил SSL на сервере и подключаюсь через https. В Chrome, когда я выключаю SSL на сервере и пытаюсь подключиться через http, он выдает ошибку.
вот ошибка Chrome бросает при попытке подключения через http с SSL выключен Кот...
Error in connection establishment: net::ERR_PROXY_AUTH_REQUESTED_WITH_NO_CONNECTION
вот мой код подключения WebSocket на клиенте...
var wss = "wss://";
if (document.location.protocol === "http:") {
wss = "ws://";
}
var wsURL = wss + document.location.host + "/status?sessionId=<%=session.getId()%>";
Это что-то специфическое для Chrome, которое нуждается в специальном коде для соединений без https websocket?
3 ответов
это специфическое поведение Chrome. Chrome не разрешает незащищенные подключения websocket (ws) к localhost (только wss, поэтому вы должны настроить сертификат TLS для вашего локального веб-сервера/websocket). Но то же самое должно работать без каких-либо проблем в Firefox и других браузерах.
см. отчет хром ошибка на Chromium по этому вопросу. Эта конкретная проблема преднамеренна, и они сделали это изменение, чтобы сделать Chrome более безопасен, предотвращая атаки против внутренние сетевые устройства и процессы прослушивания на localhost.
https://bugs.chromium.org/p/chromium/issues/detail?id=378566
Я не могу подтвердить проблему. Вы можете попробовать Эхо-тест здесь:http://www.websocket.org/echo.html
веб-сайт поддерживает http и https, вы можете указать ws://echo.websocket.org
и wss://echo.websocket.org
. Я пробовал все комбинации, и все они работали для меня.
Я думаю, что это проблема конфигурации с вашим сервером или проблемы с расширениями браузера.
Error in connection establishment: net::ERR_PROXY_AUTH_REQUESTED_WITH_NO_CONNECTION
Кажется, у вас может быть прокси с аутентификацией посередине, между клиентами и службой. В зависимости от конфигурации прокси и клиентов он может пропускать SSL-соединения, но простой http будет фильтроваться.