標準のWebページとTomcat v7.0.62サーバーの間にWebSocketを設定しています。 Firefox、Edge、およびIE11でTomcat SSLのオン/オフを切り替えても、接続は正常に機能します。ただし、Chrome(v66.03)では、websocketはサーバーでSSLをオンにしてhttps経由で接続した場合にのみ接続します。Chromeでは、サーバーでSSLをオフにしてHTTP経由で接続しようとすると、エラーがスローされます。
TomcatでSSLを無効にしてHTTP経由で接続しようとすると、エラーChromeがスローされます...
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接続で特別なコードが必要ですか?
これはChrome固有の動作です。 Chromeは、localhostへの安全でないwebsocket(ws)接続を許可しません(wssのみです。したがって、ローカルweb/websocketサーバーのTLS証明書を設定する必要があります)。しかし、Firefoxや他のブラウザーでも問題なく動作します。
この問題に関するChromiumのChromeバグレポートを参照してください。この特定の問題は意図的なものであり、ローカルネットワークでリッスンしている内部ネットワークデバイスおよびプロセスに対する攻撃を防ぐことにより、Chromeをより安全にするためにこの変更を行いました。
https://bugs.chromium.org/p/chromium/issues/detail?id=378566
問題を確認できません。ここでエコーテストを試すことができます: http://www.websocket.org/echo.html
Webサイトはhttpとhttpsをサポートしています。ws://echo.websocket.org
およびwss://echo.websocket.org
。私はすべての組み合わせを試しましたが、すべてうまくいきました。
私の推測では、それはサーバーの設定の問題か、ブラウザの拡張機能の問題です。
Error in connection establishment: net::ERR_PROXY_AUTH_REQUESTED_WITH_NO_CONNECTION
クライアントとサービスの間の中間に認証があるプロキシを持っているようです。プロキシとクライアントの構成によっては、SSL接続を許可する場合がありますが、プレーンHTTPはフィルタリングされます。