【发布时间】:2013-02-13 09:20:31
【问题描述】:
我目前正在 IE10(在 Windows 8 上)下开发一个网站,使用 JavaScript 中的 WebSockets。它在 Firefox 18 和 Chrome 25 下运行良好,但在 IE10 上建立连接时出现 SecurityError。
我正在做的事情看起来很简单:
websocket = new WebSocket('wss://hello.dev.mydomain.net');
但是 IE 不喜欢它:
SCRIPT5022: SecurityError
脚本位于“https://test.dev.mydomain.net”(显然不是真实地址)。
困扰我的是,如果我只是双击本地计算机上的文件(例如 file://...),它就可以工作。更糟糕的是:如果我使用 fiddler 来监控 HTTP 流量......它也可以工作。而没有提琴手似乎根本没有连接,如 API 规范中所述。 (见下文。)
根据websocket spec 判断,Chrome/Firefox 上也应该出现异常......但它没有。所以我怀疑它是否与 HTTP/HTTPS 相关。无论如何,我在 httpS 页面上使用 wsS 套接字......此外:当我用在线示例中找到的另一个有效服务器替换 wss 地址时,它可以工作。
我不知道这是否相关,但来自 test.dev.mydomain.net 的 IP 是 10.14.x.x,其中 hello.dev.mydomain.net 是 194.247.x.x。我不知道它是否只能在 IE 上触发某种安全性...
还有一件事:我有一个 *.dev.mydomain.net 的证书,IE 似乎没有问题。该脚本最初驻留在名为 my.name.dev.mydomain.net 的服务器上,但由于我是从另一个 URL 访问它(我得到了一个重定向,因为我们最初认为它可能是某种同源策略问题),我不明白这有什么关系。至少我希望它不会……
欢迎任何想法。
编辑:将站点添加到受信任区域也不起作用。
【问题讨论】:
-
这个问题也出现在 FireFox 中,至少在 Windows 和 OSX 的最新版本中是这样。
-
我遇到了类似的问题,但从
https://www.websocket.org/echo.html启动到ws://地址。显然它不允许从 SSL 页面打开非 SSL websocket,所以我不得不转到http://www.websocket.org/echo.html,一切都很好。 -
正确的混合内容通常在安全页面访问非安全项目时被阻止。将 websocket 从
ws://协议切换到securewss://将避免这种情况,但是您的websocket 需要实现安全套接字,并且使用的证书需要像任何其他SSL 证书一样受信任(手动安装或受信任--RootCA-中间的)。这应该类似于您从安全https://页面加载非安全http://<img ...>标记时收到的问题,尽管不太清楚警告/错误消息。 -
从 http -> ws 与 IE11 位于同一域时出现此错误。
标签: javascript websocket internet-explorer-10