gpt4 book ai didi

javascript - IE10 上的 WebSocket 给出安全错误

转载 作者:IT王子 更新时间:2023-10-29 03:06:09 25 4
gpt4 key购买 nike

我目前正在 IE10(在 Windows 8 上)下开发一个网站,使用 JavaScript 中的 WebSockets。它在 Firefox 18 和 Chrome 25 下运行良好,但在 IE10 上建立连接时出现安全错误。

我所做的似乎很简单:

websocket = new WebSocket('wss://hello.dev.mydomain.net');

但是 IE 不喜欢它:

SCRIPT5022: SecurityError 

脚本在“https://test.dev.mydomain.net”(显然不是真实地址)。

令我困扰的是,如果我只是双击本地计算机上的文件(例如 file://...),它就可以正常工作。更糟糕的是:如果我使用 fiddler 来监控 HTTP 流量……它也有效。然而,如果没有 fiddler ,似乎根本就没有连接,如 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 访问它的(我得到了重定向,因为我们首先认为它可能是某种同源策略问题),我不明白这有什么关系。至少我希望它不会...

欢迎任何想法。

编辑:将站点添加到受信任的区域也不起作用。

最佳答案

如果您尝试在本地(内联网) 域上打开 websocket,IE 似乎会抛出 SecurityError。要克服这个问题,您可以禁用 IE 识别本地站点的自动算法。这可以在 Tools > Internet Options > Security > Local Intranet > Sites 中完成。

intranet detection settings

取消选中所有复选框(或者只选中一个特定的复选框,如果您知道您的域究竟是如何最终出现在 Intranet 中的)。

请注意,IE 使用(除其他事项外)其代理设置来确定本地站点:如果您的域在代理设置中被列为排除在代理之外,那么它可能会被视为 Intranet 域。这就是启用 Fiddler 时 WebSockets 起作用的原因:它会修改 IE 代理设置,从而更改 Intranet 站点列表。

关于javascript - IE10 上的 WebSocket 给出安全错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15114279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com