web-dev-qa-db-fra.com

La connexion WebSocket échoue sur Chrome sans SSL

Je configure un WebSocket entre une page Web standard et un serveur Tomcat v7.0.62. La connexion fonctionne correctement avec Tomcat SSL activé/désactivé sous Firefox, Edge et IE11. Cependant, dans Chrome (v66.03), la prise Web se connecte uniquement lorsque j'ai activé SSL sur le serveur et que je me connecte via https. Dans Chrome, lorsque je désactive SSL sur le serveur et que je tente de me connecter via http, une erreur est générée.

Voici l'erreur que Chrome lance lors de la tentative de connexion via http avec SSL désactivé sur Tomcat ...

Error in connection establishment: net::ERR_PROXY_AUTH_REQUESTED_WITH_NO_CONNECTION

Voici mon code de connexion WebSocket sur le client ...

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

Est-ce quelque chose de spécifique à Chrome qui nécessite un code spécial sur les connexions websocket non https?

10
bluedevil2k

Ceci est un comportement spécifique à Chrome. Chrome n'autorise pas les connexions Websocket (ws) non sécurisées avec localhost (uniquement wss; vous devez donc configurer un certificat TLS pour votre serveur Web/websocket local). Mais la même chose devrait fonctionner sans aucun problème dans Firefox et les autres navigateurs.

Veuillez vous référer au rapport de bogue de Chrome sur Chromium concernant ce problème. Ce problème particulier est intentionnel et ils ont apporté cette modification pour rendre Chrome plus sûr en empêchant les attaques contre les périphériques du réseau interne et les processus d'écoute sur localhost.

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

5

Je ne peux pas confirmer votre problème. Vous pouvez essayer le test Echo ici: http://www.websocket.org/echo.html

Le site Web prend en charge http et https, vous pouvez spécifier ws://echo.websocket.org et wss://echo.websocket.org. J'ai essayé toutes les combinaisons et elles ont toutes fonctionné pour moi.

J'imagine que c'est un problème de configuration avec votre serveur ou un problème lié aux extensions de votre navigateur.

1
Forivin
Error in connection establishment: net::ERR_PROXY_AUTH_REQUESTED_WITH_NO_CONNECTION

Il semble que vous ayez un proxy avec une authentification au milieu, entre les clients et le service. En fonction de la configuration du proxy et des clients, il peut laisser passer les connexions SSL, mais un http pur sera filtré. 

0
Leo