【问题标题】:WebSocket closes under Internet Explorer - error code 1006WebSocket 在 Internet Explorer 下关闭 - 错误代码 1006
【发布时间】:2016-11-21 11:35:50
【问题描述】:

我的 WebSocket 实现在 Chrome 和 Firefox 中正常工作。

在 IE11 中出现此错误:

Websocket 错误:网络错误 12152,服务器返回无效或无法识别的响应

我使用 js WebSocket 类和 reactPhp 和 https://github.com/ratchetphp/RFC6455 作为后端。

这是IE下的request-response数据。在我看来没问题。

我检查了 Websocket 返回代码 1006 和空原因。

如何修复 IE11 错误?


问题在于,在响应标头中,我应该在 Sec-WebSocket-Protocols 中只返回一个协议。

为什么它只在 IE 下不起作用 - 因为我在后端用逗号+空格分隔协议,但 IE 仅使用逗号分隔符返回没有空格的协议。其他浏览器以逗号+空格返回协议。

例如,后端的代码如下所示:

array_map('trim', explode(',', $this->headers['Sec-WebSocket-Protocol']));

【问题讨论】:

    标签: javascript php websocket phpwebsocket


    【解决方案1】:

    问题在于,在响应标头中,我应该在 Sec-WebSocket-Protocols 中只返回一个协议。

    为什么它只在 IE 下不起作用 - 因为我在后端用逗号+空格分隔协议,但 IE 仅使用逗号分隔符返回没有空格的协议。其他浏览器以逗号+空格返回协议。

    例如,后端的代码如下所示:

    array_map('trim', explode(',', $this->headers['Sec-WebSocket-Protocol']));
    

    【讨论】:

      猜你喜欢
      • 2019-05-25
      • 1970-01-01
      • 2020-09-06
      • 2013-10-18
      • 2017-04-28
      • 1970-01-01
      • 2017-01-12
      • 2016-11-30
      • 1970-01-01
      相关资源
      最近更新 更多