Сбой соединения с WebSocket в Chrome без SSL

Я устанавливаю WebSocket между стандартной веб-страницей и сервером Tomcat v7.0.62. Соединение работает нормально с включенным / выключенным Tomcat SSL на Firefox, Edge и IE11. Однако в Chrome (v66.03) веб-сокет подключается только тогда, когда я включил SSL на сервере и подключился через https. В Chrome, когда я отключаю SSL на сервере и пытаюсь подключиться через http, выдается ошибка.

Вот ошибка, которую выдает Chrome при попытке подключиться через http с отключенным SSL на Tomcat...

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?

3 ответа

Решение

Это специфичное для Chrome поведение. Chrome не допускает небезопасных подключений websocket (ws) к localhost (только wss, поэтому вам следует установить сертификат TLS для локального сервера web/websocket). Но то же самое должно работать без проблем в Firefox и других браузерах.

Пожалуйста, обратитесь к сообщению об ошибке Chrome на Chromium относительно этой проблемы. Эта конкретная проблема является преднамеренной, и они внесли это изменение, чтобы сделать Chrome более безопасным, предотвращая атаки на внутренние сетевые устройства и процессы, прослушивающие локальный хост.

https://bugs.chromium.org/p/chromium/issues/detail?id=378566

Error in connection establishment: net::ERR_PROXY_AUTH_REQUESTED_WITH_NO_CONNECTION

Кажется, у вас может быть прокси с аутентификацией в середине, между клиентами и службой. В зависимости от конфигурации прокси-сервера и клиентов он может пропускать SSL-соединения, но простой http будет фильтроваться.

Я не могу подтвердить вашу проблему. Вы можете попробовать Echo Test здесь: http://www.websocket.org/echo.html

Сайт поддерживает http и https, вы можете указать ws://echo.websocket.org а также wss://echo.websocket.org, Я перепробовал все комбинации, и все они работали на меня.

Я предполагаю, что это проблема конфигурации вашего сервера или проблема с расширениями вашего браузера.

Другие вопросы по тегам