web-dev-qa-db-de.com

WebSocket-Verbindung schlägt in Chrome ohne SSL fehl

Ich stelle ein WebSocket zwischen einer Standard-Webseite und einem Tomcat-Server der Version 7.0.62 ein. Die Verbindung funktioniert einwandfrei, wenn Tomcat SSL in Firefox, Edge und IE11 ein-/ausgeschaltet ist. In Chrome (v66.03) stellt das Websocket jedoch nur eine Verbindung her, wenn ich SSL auf dem Server aktiviert habe und die Verbindung über https erfolgt. Wenn ich in Chrome SSL auf dem Server ausschalte und versuche, über http eine Verbindung herzustellen, wird ein Fehler ausgegeben.

Hier ist der Fehler, den Chrome auslöst, wenn versucht wird, eine Verbindung über http mit deaktiviertem SSL auf Tomcat herzustellen ...

Error in connection establishment: net::ERR_PROXY_AUTH_REQUESTED_WITH_NO_CONNECTION

Hier ist mein WebSocket-Verbindungscode auf dem Client ...

var wss = "wss://";
if (document.location.protocol === "http:") {
   wss = "ws://";
}
var wsURL = wss + document.location.Host + "/status?sessionId=<%=session.getId()%>";

Ist dies etwas Chrome-spezifisches, das speziellen Code für Nicht-https-Websocket-Verbindungen benötigt?

10
bluedevil2k

Dies ist ein Chrome-spezifisches Verhalten. Chrome erlaubt keine unsicheren Websocket-Verbindungen (Ws-Verbindungen) zu Localhost (nur Wss, daher sollten Sie ein TLS-Zertifikat für Ihren lokalen Web-/Websocket-Server einrichten). Das gleiche sollte jedoch ohne Probleme in Firefox und anderen Browsern funktionieren.

Beziehen Sie sich bezüglich dieses Problems auf den Chrome-Fehlerbericht zu Chromium. Dieses spezielle Problem ist beabsichtigt und hat diese Änderung vorgenommen, um Chrome sicherer zu machen, indem Angriffe auf interne Netzwerkgeräte und Prozesse verhindert werden, die Localhost überwachen.

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

Ich kann Ihr Problem nicht bestätigen. Sie können den Echo-Test hier ausprobieren: http://www.websocket.org/echo.html

Die Website unterstützt http und https. Sie können ws://echo.websocket.org und wss://echo.websocket.org angeben. Ich habe alle Kombinationen ausprobiert und sie haben alle für mich gearbeitet.

Meine Vermutung ist, dass es sich um ein Konfigurationsproblem mit Ihrem Server oder um ein Problem mit Ihren Browsererweiterungen handelt.

1
Forivin
Error in connection establishment: net::ERR_PROXY_AUTH_REQUESTED_WITH_NO_CONNECTION

Es scheint, dass Sie einen Proxy mit Authentifizierung in der Mitte zwischen den Clients und dem Dienst haben. Abhängig von der Proxy- und Client-Konfiguration kann es SSL-Verbindungen zulassen, aber nur http wird gefiltert. 

0
Leo