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

pader

在某些稍低一些版本的 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 也会有这个头。

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

6491 1 0
1个回答

pader

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

  • 暂无评论
年代过于久远,无法发表回答
🔝