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

时间:2018-06-05 16:11:31

标签: 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时出现的错误...

end_time

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

Error in connection establishment: net::ERR_PROXY_AUTH_REQUESTED_WITH_NO_CONNECTION

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

3 个答案:

答案 0 :(得分:5)

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

有关此问题,请参阅有关Chromium的Chrome错误报告。这个特殊的问题是故意的,他们已经做出了这个改变 通过防止攻击内部网络设备和侦听本地主机的进程,Chrome更安全。

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

答案 1 :(得分:1)

我无法确认您的问题。您可以在此处尝试回声测试:http://www.websocket.org/echo.html

网站支持http和https,您可以指定ws://echo.websocket.orgwss://echo.websocket.org。我尝试了所有组合,他们都为我工作。

我的猜测是,这是服务器的配置问题或浏览器扩展程序的问题。

答案 2 :(得分:0)

Error in connection establishment: net::ERR_PROXY_AUTH_REQUESTED_WITH_NO_CONNECTION

看起来您可能在客户端和服务之间有中间身份验证的代理。根据代理和客户端配置,它可能允许通过SSL连接,但普通的http将被过滤。