7

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

它适用于 IE11,但在“MS Edge”中出现错误:

不允许跨区请求

我在Win10 10240上遇到了这个问题,所以默认启用了“允许本地主机环回”标志,并没有帮助。

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

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

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

4

3 回答 3

6

在 Microsoft Edge 浏览器"About:flags"的标题栏(搜索栏)中键入。没有引号,勾选/取消勾选该"allow Localhost Loopback"功能。

Win Build 10240 上的 Edge。(仍然适用于 New Edge(基于 Chrome))

于 2015-07-30T01:01:40.050 回答
5

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

简而言之,当您new WebSocket在 MS Edge 中调用时,当您使用错误的“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 );
    }
}

因此,您不能“重试”连接不同的主机。

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

于 2015-07-23T13:27:21.727 回答
1

这最近在我执行 Windows 10 Creator's Update (1703) 后再次发生在我身上。

但修复很容易。我不得不

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

完成这两项操作后,我可以在 MS Edge 中再次访问我的本地主机站点。

于 2017-04-27T01:36:00.743 回答