网络错误 12152:Edge 和 IE 11 中的 WebSockets

Posted

技术标签:

【中文标题】网络错误 12152:Edge 和 IE 11 中的 WebSockets【英文标题】:Network Error 12152: WebSockets in Edge and IE 11 【发布时间】:2015-10-12 11:34:08 【问题描述】:

我有一个使用 websockets 安全 (WSS) 的站点,并且在 chrome 中运行良好。

在 IE 和 Edge 中进行测试也可以,但是在浏览器控制台中我得到Network Error 12152,如果实施,这也会触发websocket.addEventListener("error",function())

实际上一切正常,我只是收到了这个似乎没有破坏任何东西的错误。

从浏览器端关闭套接字时触发错误

EDGE 中的标题

更多信息:我使用的代码示例

//connect via wss then
ws.addEventListener("error",function(event) // this hits when Socket is closed)
ws.addEventListener("open",function()
       ws.addEventListener("message",function(event)
        //do stuff
        ws.Close()
       )
)

进一步确认问题

我去了https://www.websocket.org/echo.html,该站点具有测试websocket连接的能力。我让它连接到我的服务器。可以毫无问题地打开连接。然而,同样地,我的代码也遇到了问题。当我单击断开连接按钮时,此站点也会引发错误。见下图。这是 IE/Edge 中的错误吗?

我的服务器没有正确断开连接? 我将上述站点与默认目的地(他们的 websocket 服务器)一起使用,而不是我的。没有错误。但是在断开连接时连接到我的会出现错误。

可能是什么问题?

谢谢

【问题讨论】:

这与 ajax 帖子的@JaromandaX 无关,您最不想要的是在设置 websocket 时关闭套接字连接......而 websocket 与 ajax 完全不同。 是的,很抱歉 【参考方案1】:

查看 Microsoft 知识库文章,您没有在连接设置中返回预期的响应/标头

来自microsoft knowledge base

12152 ERROR_HTTP_INVALID_SERVER_RESPONSE

无法解析服务器响应。

如果您查看 Server Handshake Response 部分,来自developper docs of mozilla

当它收到这个请求时,服务器应该发送一个看起来很奇怪(但仍然是 HTTP)的响应,看起来像这样(记住每个标头都以 \r\n 结尾,并在最后一个标头后面加上一个额外的 \r\n ):

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

因此,我建议您检查您的标头并查看您在握手时发送了哪些响应,以便您与协议保持一致。

【讨论】:

标题对我来说看起来不错。如果不正确,我在 C# 中的 websocket 服务器将终止连接。我会在问题中添加标题的屏幕截图 是的,标题看起来不错,异常消息状态和跟踪日志是什么?它究竟在什么时候触发?握手时,握手后?在接收握手?在推送第一个数据时?您用来建立连接的代码是什么? 查看触发错误的时机。这是从浏览器端关闭连接的时候。我将如何调出跟踪日志?我还将提供我如何操作的示例代码。 刚发现我从另一个站点收到同样的错误。见问题。 它可能需要边缘的原因代码/即***.com/questions/18803971/… 如何获取错误。尝试通过执行console.log(event); 并在控制台中查看属性和输出来分析事件对象。你碰巧使用这个库吗? github.com/websockets/ws/tree/master/examples【参考方案2】:

我已经修复了 IE 浏览器中的相同错误。检查websocket首字母的大小写。

非IE浏览器:

Upgrade: **w**ebsocket

IE浏览器:

Upgrade: **W**ebsocket

【讨论】:

以上是关于网络错误 12152:Edge 和 IE 11 中的 WebSockets的主要内容,如果未能解决你的问题,请参考以下文章

XMLHttpRequest:网络错误 0x80070005,在 Microsoft Edge(但不是 IE)上拒绝访问

IE11 400错误,谷歌火狐edge正常显示

prepend/append 适用于 Chrome 和 Firefox,但不适用于 IE11 和 Edge

vue.esm.js(Microsoft IE 11 和 Microsoft Edge)中的空白页和“未知名称”错误 [关闭]

Edge 和 IE11 XSLT 空间问题

HttpSendRequest 失败并出现错误 12152,但 InternetOpenUrl 没有