【问题标题】:WebSocket on loopback : Cross zone connection not allowed error on MS Edge环回上的 WebSocket: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 仅适用于来自同一区域的不同来源。 或者在不更改客户端设备上的任何设置的情况下,是否有任何其他解决方案可以解决此问题?

【问题讨论】:

    标签: javascript browser websocket microsoft-edge


    【解决方案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 连接。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-03-29
          • 2013-02-17
          • 1970-01-01
          • 1970-01-01
          • 2012-04-27
          • 2019-02-17
          • 1970-01-01
          相关资源
          最近更新 更多