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

时间:2015-07-21 13:52:46

标签: websocket loopback microsoft-edge

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

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

  

不允许跨区域请求

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

当我使用CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"或此utility时,所有内容都按预期工作。

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

相关问题:Can't open localhost in Microsoft Edge (Project Spartan) in Windows 10 preview

3 个答案:

答案 0 :(得分:5)

经过一番研究后,我发现了错误的根源。这是我的回购,重现错误: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 );
    }
}

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

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

答案 1 :(得分:5)

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

Edge on Win Build 10240.(仍然可以从build 14393开始工作)

答案 2 :(得分:1)

最近在做了Windows 10 Creator的更新(1703)后再次发生在我身上。

但修复很简单。我不得不

  1. 检查"允许Localhost Loopback" @Narcarsiss提到的功能(不确定是否在更新中被禁用,或者我之前从未检查过它。)
  2. 在地址栏中指定协议(http://localhost:5000/,而不仅仅是localhost:5000 /)。
  3. 执行这两项操作后,我又能够在MS Edge中再次访问我的本地站点。