WebSocket的IE10中得到一个SecurityError(WebSocket on IE10

2019-07-20 15:28发布

我目前正在开发(在Windows 8)IE10下一个网站,使用JavaScript中的WebSockets。 它运行的Firefox 18和Chrome 25以下罚款,但IE10我得到一个SecurityError当我建立连接。

我在做什么似乎相当straghtforward:

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

但IE不喜欢它:

SCRIPT5022: SecurityError 

该脚本是“ https://test.dev.mydomain.net ”(没有明显的真实地址)。

让我困扰的是,如果我只是我的本地计算机上双击该文件(如文件:// ...),它只是工作。 更糟糕的是:如果我使用Fiddler监控HTTP流量......它也适用 。 而人们似乎根本没有连接没有小提琴手,作为API的规范详细说明。 (见下文。)

通过判断的WebSocket规范 ,例外也应该出现在Chrome / Firefox中......但事实并非如此。 所以我怀疑它有什么相关的HTTP / HTTPS。 在任何情况下,我使用的是WSS插座HTTPS网页...此外:当我通过一个在线的例子发现了另一个有效的服务器替换WSS地址,它的工作原理。

我不知道这是否是相关的,但是从test.dev.mydomain.net的IP是10.14.xx其中hello.dev.mydomain.net是194.247.xx,我不知道这是否会引发某种安全在IE浏览器只...

还有一两件事:我有* .dev.mydomain.net证书,IE似乎并不具备与它的问题。 该脚本原本驻留在服务器调用my.name.dev.mydomain.net,但因为我是从另一个URL访问它(我有一个重定向,因为我们首先想到的可能是某种同源策略问题),我不要看它怎么可能没关系。 至少我希望它不...

任何想法表示欢迎。

编辑:加入网站的信任区域也不起作用。

Answer 1:

它看起来像IE会引发SecurityError如果你试图打开一个本地(Intranet)域的WebSocket。 为了克服这个问题,可以禁用IE的自动算法识别本地站点。 这可以做Tools > Internet Options > Security > Local Intranet > Sites

取消所有复选框(或只有特定的一个,如果你知道究竟怎么了您的域名并在企业内部网的人结束)。

需要注意的是IE浏览器使用(除其他事项外)的代理服务器设置来确定本地站点:如果列在您的域从代理设置代理排除在外,那么它可能会作为一个内联网处理。 这就是为什么WebSockets的工作,如果你能提琴手:它会修改IE代理设置,并因而Intranet站点的变化列表。



Answer 2:

好吧,我的问题不是成功的,所以我会发布的“解决办法”,我发现。

我得到了另一个地址的网站,在194.247。 太。 这奇妙的是,解决它。 猜猜IE不喜欢混合本地和外部的东西,手表的IP。

不管怎么说,我希望这可以派上用场,给任何人谁拥有了同样的问题。

如果你有一个解决方案通过配置IE来解决“真正”的问题,让我知道:)

干杯,



Answer 3:

I had this problem in Windows7/IE11 after applying a security patch. For Windows10/Edge is the same story.

As this is a local websocket (ws://localhost) you have to add ws:\\localhost\ to Internet Explore configurations (Tools > Internet Options > Security > Local Intranet > Sites > Advanced).

In Windows 10/Microsoft Edge you will find this configuration in Control Panel > Internet Options.

UPDATE

The address of your webapp (https://test.dev.mydomain.net) must be added to the local intranet zone too. Note that in the image the webapp address should be added.



Answer 4:

浏览器有一个WebSocket的限制。 例如Internet Explorer具有设置为6每主机标题名WebSocket连接的默认限制。 相同的限制被设定为的WinForms WebBrowser组件。

该解决方案是增加在关键计算机值\ WOW6432Node \微软\的Internet Explorer \ MAIN \ FeatureControl \ FEATURE_WEBSOCKET_MAXCONNECTIONSPERSERVER \ HKEY_LOCAL_MACHINE \ SOFTWARE注册表。 只需添加DWORD值可执行文件的名称,例如IEXPLORE.EXE(或应用程序的可执行文件名称,如果您使用的Web浏览器组件)和设定值从范围2..128

第二个选项如何解决抛出:SecurityException是创建多个子域。



Answer 5:

客户端的主机名/ IP地址应该是相同的服务器IP /主机名这就是倾听,否则你会得到上述错误。

1)确保服务器的主机名是否配置在IP /本地主机等听以及如果不显式指定主机名AST服务器

2)使用相同的主机名中的客户端。 这将解决这个问题。 它的工作对我来说...



Answer 6:

我遇到的错误(尽管它没有说SCRIPT5022一部分,而它只是报告“ScriptError”)。 我通过点击“可信站点”,然后将承载远程WebSocket的机器周围的问题得到。 注意,添加到受信任的站点,

  • 我有没有提供的地址“WS://”部分(像刚才mymahcine.mydomain.com)

  • 我不得不取消,说盒子“要求服务器验证的https://”选项。

  • 我做加入域之后,我重新检查了盒子“要求服务器验证(https://)。我建议大家做同样取消勾选框是唯一的解决方法,添加不首先网站HTTPS(而WS://在我的情况)


Answer 7:

我曾在我的客户环境中的一个相同的问题。 原来,他们有一个代理配置并没有直接允许WebSocket的端点连接,不支持WebSocket协议。 临时解决方案是使用代理禁用和一切开始工作。 长期的解决办法是编辑代理的配置(.pac文件),以排除的WebSocket端点的地址。

要禁用代理,请访问:Internet Explorer选项>连接选项卡>局域网设置按钮>取消选中自动检测设置。

希望这可以帮助别人。



Answer 8:

除了确保Internet区域不是本地主机(如上面的答案),确保如果使用HTTPS,则WSS应该被使用。

这是不是在其他浏览器的问题,但IE是升技更挑剔。



文章来源: WebSocket on IE10 giving a SecurityError