环回上的 WebSocket:MS Edge 上不允许跨区域连接错误
Posted
技术标签:
【中文标题】环回上的 WebSocket:MS Edge 上不允许跨区域连接错误【英文标题】:WebSocket on loopback : Cross zone connection not allowed error on MS Edge 【发布时间】:2017-11-24 10:16:43 【问题描述】:我有一个在环回上使用 websocket 的脚本。由于网站是通过 Internet 提供的,而 websocket 是通过 Intranet 提供的,我在 Microsoft Edge 中观察到 “SCRIPT12017: WebSocket Error: SECURITY_ERR, Cross zone connection not allowed”。我在 Internet Explorer 中也观察到类似的问题。 IE 和 MS Edge 将 URL 分类到不同的区域,每个区域都具有独特的权限,因此不允许跨区域连接。
我可以通过启用 CORS(跨域资源共享)来解决此问题,还是 CORS 仅适用于来自同一区域的不同来源。 或者在不更改客户端设备上的任何设置的情况下,是否有任何其他解决方案可以解决此问题?
【问题讨论】:
【参考方案1】:你可以在这里找到答案
Microsoft Edge does not allow localhost loopback for websockets
或者你可以在你的命令提示符下运行它
CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"
【讨论】:
【参考方案2】:在浏览器 js 中实例化 socket.io 时,请使用 127.0.0.1 而不是 localhost。
const socket = io("http://127.0.0.1:3000");
而不是
const socket = io("http://localhost:3000");
【讨论】:
【参考方案3】:这可能无法回答您的问题,但对其他人有用。
这里有 2 个更改帮助我解决了问题并建立了 localhost WebSocket 连接。
-
在控制面板 - Internet 选项中,选择安全选项卡。在安全选项卡中,选择本地 Intranet 区域。单击站点按钮并取消选中本地 Intranet 对话框中的所有复选框。或
在控制面板 - Internet 选项中,选择安全选项卡。在安全选项卡中,选择本地 Intranet 区域。单击“站点”按钮,然后单击“本地 Intranet”对话框中的“高级”按钮,将所需的网址添加到与 localhost 相同的区域。
【讨论】:
以上是关于环回上的 WebSocket:MS Edge 上不允许跨区域连接错误的主要内容,如果未能解决你的问题,请参考以下文章