【问题标题】:Websocket connection works in chrome but fails to connect in firefox?Websocket连接在chrome中工作但在firefox中无法连接?
【发布时间】:2019-02-27 09:04:31
【问题描述】:

在 chrome 中一切正常。没问题。

在 Firefox 中我收到一个错误:Firefox 无法在 wss://domain.com 上建立与服务器的连接

如果您转到 https://websocket.org/echo.html 并在 chrome 中将 location 替换为 wss://domain.com 则可以重现,而 ff 则无效。

我不知道为什么?

使用 Nodejs 并在 heroku 上运行,在 cloudflare 后面。

编辑

所以我修复了布拉德的提示。

我将https://github.com/websockets/ws/blob/master/doc/ws.md 用于websocket。 它有一个选项perMessageDeflate

现在禁用它使其在 FF 中工作。

不确定发生了什么,但这解决了它。 (我是否也想在客户端使用这个库?)

我在 MDN 上找到的只有这个

Gecko 8.0 从 Gecko 8.0(Firefox 8.0 / Thunderbird 8.0 / SeaMonkey 2.5)开始,WebSocket 协议的 deflate-stream 扩展 已被禁用,因为它已从规范中弃用 草稿。这解决了与某些网站的不兼容问题。

【问题讨论】:

  • Firefox 用户将收到400 Bad Request 回复。至于为什么,目前还不是很明显。 Firefox 和 Chrome 之间的请求数据几乎相同。我看到的唯一区别是 Chrome 有更多的这个标题:Sec-Websocket-Extensions: permessage-deflate; client_max_window_bits=10; server_no_context_takeover; client_no_context_takeover; server_max_window_bits=10
  • 布拉德将其发布为解决问题的答案,我不接受它
  • 再次非常感谢

标签: node.js google-chrome firefox websocket socket.io


【解决方案1】:

您收到了 400 Bad Request 回给 Firefox 用户。至于为什么,目前还不是很明显。 Firefox 和 Chrome 之间的请求数据几乎相同。我看到的唯一区别是 Chrome 有更多的这个标题:

Sec-Websocket-Extensions: permessage-deflate; client_max_window_bits=10; server_no_context_takeover; client_no_context_takeover; server_max_window_bits=10.

【讨论】:

  • 在 Firefox 中你怎么能看到这个,在开发者工具中我没有看到 websocket 握手等选项
  • @MuhammadUmer 如果您按 F12,您可以在开发人员工具网络选项卡中看到它。而且,我使用的另一个工具是 Fiddler,但它对连接有一些副作用,使它可以更进一步地工作。
猜你喜欢
  • 2012-05-14
  • 2019-06-21
  • 2016-02-09
  • 1970-01-01
  • 2014-07-09
  • 2019-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多