没有SSL的Chrome上的WebSocket连接失败

blu*_*l2k 11 ssl websocket tomcat7

我正在标准网页和Tomcat v7.0.62服务器之间设置WebSocket.在Firefox,Edge和IE11上打开/关闭Tomcat SSL时连接正常.但是,在Chrome(v66.03)中,只有当我在服务器上启用SSL并通过https连接时,websocket才会连接.在Chrome中,当我在服务器上关闭SSL并尝试通过http连接时,它会引发错误.

以下是Chrome尝试通过http连接Tomcat时关闭SSL时出现的错误...

Error in connection establishment: net::ERR_PROXY_AUTH_REQUESTED_WITH_NO_CONNECTION
Run Code Online (Sandbox Code Playgroud)

这是我在客户端上的WebSocket连接代码......

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

这是Chrome专用的,需要非https websocket连接上的特殊代码吗?

Jee*_*era 7

这是Chrome特定的行为.Chrome不允许与localhost的不安全websocket(ws)连接(仅限wss,因此您应为本地Web/websocket服务器设置TLS证书).但同样应该在Firefox和其他浏览器中没有任何问题.

有关此问题,请参阅有关Chromium的Chrome错误报告.这个特殊问题是有意的,他们通过防止攻击内部网络设备和监听localhost的进程,进行了这项更改,使Chrome更安全.

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