Microsoft Edge не разрешает локальную петлю для websockets

У меня есть веб-сайт и настольное приложение, и я хочу подключить их с помощью websockets. Поэтому мой веб-сайт пытается подключиться к wss://localhost:8080, например.

он работает в IE11, но в "MS Edge" у меня есть ошибка:

запрос зоны не допускается

У меня есть эта проблема на Win10 10240, поэтому флаг "разрешить localhost loopback" включен по умолчанию, и это не помогло.

когда я использую CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe" или это утилиты, все работает, как ожидалось.

Итак, это случай, что в новых сборках "MS Edge" циклы разрешены для http, но не разрешены для websockets? И если да, можно ли сделать какой-то обходной путь, а не заставлять моих пользователей запускать некоторую оболочку comand или загружать утилиту externall?

вопрос: не удается открыть localhost в Microsoft Edge (Project Spartan) в Windows 10 preview

3 ответов


после некоторых исследований я нашел источник ошибки. Вот мое репо, чтобы воспроизвести ошибку: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 );
    }
}

из-за этого вы не можете "повторить попытку" для подключения к разным хостам.

кстати, если вы попробуете нелокальный несуществующий хост, он будет генерировать исключение!


в браузере Microsoft Edge введите "About: flags" в строке заголовка (строка поиска). Нет кавычек, отметьте / снимите галочку с функции "разрешить localhost Loopback".

Edge на Win Build 10240. (все еще работает по состоянию на build 14393)


Это недавно произошло со мной снова после обновления Windows 10 Creator (1703).

но исправить было легко. Мне пришлось

  1. Проверьте функцию "Разрешить localhost Loopback", упомянутую @Narcarsiss (не уверен, что это было отключено в обновлении, или я просто никогда не проверял его ранее).
  2. укажите протокол в адресной строке (http://localhost:5000/ вместо просто localhost: 5000/).

после делая оба, я смог снова получить доступ к моим сайтам localhost в MS Edge.