我有网站和桌面应用程序,我想通过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)后又发生了这种情况。
但是修复很容易。我不得不
- 检查@Narcarsiss提到的"允许本地主机环回"功能(不确定是否在更新中被禁用,或者我以前从未检查过自己)。
- 在地址栏中指定协议(http://localhost:5000/而不是localhost:5000/)
在做了这两件事之后,我能够在MS Edge中再次访问我的本地主机站点。