WebSocket到localhost无法在Microsoft Edge上运行

Mot*_*tti 10 javascript websocket microsoft-edge

我创建了一个简单的WebSocket服务器,并尝试使用以下代码连接到它:

function test(name) {
    var ws = new WebSocket('ws://localhost:1234');
    ws.onopen = function () {
        ws.send('Hello from ' + name);
    }
}
test('Edge');
Run Code Online (Sandbox Code Playgroud)

这在Windows10上的Chrome和IE11上运行良好但是当我从Edge尝试时,该onopen函数未被调用,而是最终我得到以下错误:

SCRIPT12029:WebSocket错误:网络错误12029,无法建立与服务器的连接

这发生在Edge的12.10240版本中.

这里询问了类似的问题,但错误信息不同.

我试过的事情:

  • IP - localhost,, 127.0.0.1实际IP
  • 允许localhost环回标志 - 打开和关闭

尝试与其他计算机通信时,不会发生此问题.

这是Edge中的缺陷还是我做错了什么?

Joo*_*ols 12

我有类似的问题,但它实际上是在浏览器中.我可以使用短语localhost,它工作正常,但当我使用我的机器名称时,我没有工作.我找到了这个论坛,他们建议您在管理员提示符中运行以下命令:

CheckNetIsolation LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe
Run Code Online (Sandbox Code Playgroud)

为我工作.以为您可能会看到某种形式的同一问题.

正如论坛建议的那样,您现在也可以通过打开Edge并导航到" about:flags ",然后在"Developer Settings"下勾选" Allow localhost loopback(这可能会使您的设备面临风险)".应该感觉比将随机内容粘贴到命令提示符更安全一些.

  • 在Edge的最新版本中,默认情况下似乎启用了环回标志,但是无论如何都需要.CheckNetIsolation`修复. (4认同)
  • @Sanich来自MS的解释是"Edge作为一个不同于IE的Windows现代应用运行,因此出于安全原因它默认具有网络隔离." 另请注意,如果在域中,"本地Intranet区域中的自动检测设置"在IE中可能具有类似的效果.https://blogs.msdn.microsoft.com/msgulfcommunity/2015/07/01/how-to-debug-localhost-on-microsoft-edge/ (2认同)
  • 不使用最新版本 (2认同)