在某些较低版本的 Chrome 上 WebSocket 握手失败[已解决]

0

在某些稍低一些版本的 Chrome 上与 Workerman 进行 WebSocket 握手失败,比如 Windows 版的 Chrome 41,原因是该版本的浏览器在 WebSocket 握手时默认会传一个 Sec-WebSocket-Protocol 头:


Sec-WebSocket-Protocol: undefined


然后就发生了这种错误:


WebSocket connection to 'ws://127.0.0.1:8100/' failed: Error during WebSocket handshake: Sent non-empty 'Sec-WebSocket-Protocol' header but no response was received


建立连接的方法很简单,并没有传第二个参数:


var ws = new WebSocket("ws://127.0.0.1:8100");


难道这是浏览器的 BUG?我在高版本的 Chrome 上即使故意传一个 undefined 的变量给第二个参数,也不会发送 Sec-WebSocket-Protocol 头,而我说的版本中,即使我第二个参数传 null 也会有这个头。


请问除了升级浏览器外有没有什么办法解决这个?

已邀请:

pader - phper

赞同来自:

额,没事了,不关浏览器的事,是 Adguard 这个插件搞的鬼。。
奇怪了,这个插件在 Mac 上的 Chrome 里就没这个问题。

要回复问题请先登录注册