环回WebSocket:MS Edge上的跨区连接不允许出错

时间:2017-11-24 10:16:44

标签: javascript browser websocket cors microsoft-edge

我有一个在环回上使用websocket的脚本。由于网站是通过互联网和内部网上的websocket提供的,我在Microsoft Edge中观察到“SCRIPT12017:WebSocket错误:SECURITY_ERR,不允许交叉区域连接”。我也在Internet Explorer中发现了类似的问题。 IE和MS Edge将URL分类到不同的区域,每个区域都具有唯一的权限,因此不允许跨区域连接。

我可以通过启用CORS(跨源资源共享)来解决此问题,或者CORS仅适用于来自同一区域的不同来源。 或者在没有更改客户端设备上的任何设置的情况下是否有任何其他解决方案?

3 个答案:

答案 0 :(得分:1)

你可以在这里找到答案

Microsoft Edge does not allow localhost loopback for websockets

或者您可以在命令提示符

上运行它

CheckNetIsolation LoopbackExempt -a -n =“Microsoft.MicrosoftEdge_8wekyb3d8bbwe”

答案 1 :(得分:0)

在浏览器js中实例化socket.io时,请使用 127.0.0.1 代替 localhost

const socket = io("http://127.0.0.1:3000");

代替

const socket = io("http://localhost:3000");

答案 2 :(得分:0)

这可能不会回答您的问题,但对其他人有用。

这里有2个更改可以帮助我解决问题并建立localhost WebSocket连接。

  1. 在“控制面板-Internet选项”中,选择“安全性”选项卡。在“安全性”选项卡中,选择“本地Intranet区域”。单击站点按钮,然后取消选中本地Intranet对话框中的所有复选框。或
  2. 在“控制面板-Internet选项”中,选择“安全性”选项卡。在“安全性”选项卡中,选择“本地Intranet区域”。单击“站点”按钮,然后在“本地Intranet”对话框中单击“高级”按钮,将所需的Web地址添加到与localhost相同的区域中。