Microsoft Edge不允许本地主机对websockets进行环回



我有网站和桌面应用程序,我想通过websockets连接它们。例如,我的网站尝试连接到wss://localhost:8080。

它在IE11中工作,但在"MS Edge"中我有一个错误:

不允许跨区域请求

我在Win10 10240上有这个问题,所以标志"允许本地主机环回"是默认启用的,它没有帮助。

当我使用CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"或此实用程序时,一切都按预期工作。

所以,这是一种情况,在新构建的"MS Edge"环是允许的http,但不允许的websockets?如果是这样,是否有可能制定一些解决方案,而不是强迫我的用户运行一些shell命令或下载外部实用程序?

相关问题:能否't打开localhost在Microsoft Edge (Project Spartan)在Windows 10预览

在Microsoft Edge浏览器的标题栏(搜索栏)中键入"About:flags"。无引号,打勾/不打勾"allow Localhost Loopback"功能

Edge on Win Build 10240

经过一番研究,我找到了错误的根源。以下是我的repo,以重现错误:https://github.com/AZaviruha/ms-edge-ws-strange

简而言之,当您在MS Edge中调用new WebSocket时,当您使用错误的"local"-host参数调用它时,它不会生成异常:

var socket, path;
var hosts = ['localhost', '127.0.0.1'];
for (var i in hosts) {
    path = 'ws://'+hosts[i]+':9446';
    console.log( '===> Tested path :: ', path );
    try {
        socket = new WebSocket( path );
        break;
    }
    catch ( e ) {
        // !!! Never shown !!!
        console.error( '===> WebSocket creation error :: ', e );
    }
}

因此,您不能"重试"连接到不同的主机。

顺便说一下,如果你尝试非本地不存在的主机,它会产生异常!

最近我在做了Windows 10 Creator's Update(1703)后又发生了这种情况。

但是修复很容易。我不得不

  1. 检查@Narcarsiss提到的"允许本地主机环回"功能(不确定是否在更新中被禁用,或者我以前从未检查过自己)。
  2. 在地址栏中指定协议(http://localhost:5000/而不是localhost:5000/)

在做了这两件事之后,我能够在MS Edge中再次访问我的本地主机站点。

相关内容

  • 没有找到相关文章