我目前正在开发(在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访问它(我有一个重定向,因为我们首先想到的可能是某种同源策略问题),我不要看它怎么可能没关系。 至少我希望它不...
任何想法表示欢迎。
编辑:加入网站的信任区域也不起作用。
它看起来像IE会引发SecurityError如果你试图打开一个本地(Intranet)域的WebSocket。 为了克服这个问题,可以禁用IE的自动算法识别本地站点。 这可以做Tools > Internet Options > Security > Local Intranet > Sites
。
取消所有复选框(或只有特定的一个,如果你知道究竟怎么了您的域名并在企业内部网的人结束)。
需要注意的是IE浏览器使用(除其他事项外)的代理服务器设置来确定本地站点:如果列在您的域从代理设置代理排除在外,那么它可能会作为一个内联网处理。 这就是为什么WebSockets的工作,如果你能提琴手:它会修改IE代理设置,并因而Intranet站点的变化列表。
好吧,我的问题不是成功的,所以我会发布的“解决办法”,我发现。
我得到了另一个地址的网站,在194.247。 。 太。 这奇妙的是,解决它。 猜猜IE不喜欢混合本地和外部的东西,手表的IP。
不管怎么说,我希望这可以派上用场,给任何人谁拥有了同样的问题。
如果你有一个解决方案通过配置IE来解决“真正”的问题,让我知道:)
干杯,
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.
浏览器有一个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是创建多个子域。
客户端的主机名/ IP地址应该是相同的服务器IP /主机名这就是倾听,否则你会得到上述错误。
1)确保服务器的主机名是否配置在IP /本地主机等听以及如果不显式指定主机名AST服务器
2)使用相同的主机名中的客户端。 这将解决这个问题。 它的工作对我来说...
我遇到的错误(尽管它没有说SCRIPT5022一部分,而它只是报告“ScriptError”)。 我通过点击“可信站点”,然后将承载远程WebSocket的机器周围的问题得到。 注意,添加到受信任的站点,
我曾在我的客户环境中的一个相同的问题。 原来,他们有一个代理配置并没有直接允许WebSocket的端点连接,不支持WebSocket协议。 临时解决方案是使用代理禁用和一切开始工作。 长期的解决办法是编辑代理的配置(.pac文件),以排除的WebSocket端点的地址。
要禁用代理,请访问:Internet Explorer选项>连接选项卡>局域网设置按钮>取消选中自动检测设置。
希望这可以帮助别人。
除了确保Internet区域不是本地主机(如上面的答案),确保如果使用HTTPS,则WSS应该被使用。
这是不是在其他浏览器的问题,但IE是升技更挑剔。