Сбой соединения с 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
, Я перепробовал все комбинации, и все они работали на меня.
Я предполагаю, что это проблема конфигурации вашего сервера или проблема с расширениями вашего браузера.