I have web-site and desktop application, and I want to connect them by websockets. So my web-site tries to connect to wss://localhost:8080, for example.
It works in IE11, but in "MS Edge" I have an error:
Cross zone request is not allowed
I have this problem on Win10 10240, so the flag "Allow localhost loopback" is enabled by default, and it did not help.
When I use CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"
or this utility, all works as expected.
So, is this a case, that in new builds of "MS Edge" loopbacks are allowed for http, but not allowed for websockets? And if so, is it possible to make some workaround, and not to force my users to run some shell comand or to download externall utility?
Related question: Can't open localhost in Microsoft Edge (Project Spartan) in Windows 10 preview
After some research I found the source of error. Here is my repo, to reproduce error: https://github.com/AZaviruha/ms-edge-ws-strange
In short, when you call new WebSocket
in MS Edge, it does not generate exception, when you call it with wrong "local"-host argument:
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 );
}
}
Because of this, you can't "retry" to connect with different hosts.
By the way, if you try non-local non-existent host, it will generate exception!
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments