Microsoft Edge不允许对websockets进行localhost环回

aza*_*uha 7 loopback websocket microsoft-edge

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

它适用于IE11,但在"MS Edge"中我有一个错误:

不允许跨区域请求

我在Win10 10240上遇到此问题,因此默认情况下启用"允许localhost环回"标志,但它没有帮助.

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

那么,这是一个案例,在新版本的"MS Edge"环回允许http,但不允许websockets?如果是这样,是否有可能做出一些解决方法,而不是强迫我的用户运行一些shell命令或下载externall实用程序?

相关问题:无法在Windows 10预览中的Microsoft Edge(Project Spartan)中打开localhost

aza*_*uha 5

经过一番研究,我发现了错误的根源.这是我的回购,重现错误:https://github.com/AZaviruha/ms-edge-ws-strange

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

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 );
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,您无法"重试"与不同的主机连接.

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


Nar*_*iss 5

在Microsoft Edge浏览器中,在标题栏(搜索栏)中键入"关于:标志".没有引号,勾选/取消选中"允许本地主机环回"功能.

Win Build 10240上的Edge.(仍然在build 14393中工作)

  • 也可以在注册表中找到:`HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge\ExperimentalFeatures\AllowLocalhostLoopback`,是的,丑陋的`8wekyb3d8bbw`部分注册表项完全有效,它是Microsoft的唯一开发人员ID,在注册表中出现数百次. (2认同)