web-dev-qa-db-ja.com

Microsoft Edgeは、WebSocketのローカルホストループバックを許可していません

Webサイトとデスクトップアプリケーションがあり、それらをWebSocketで接続したいと思います。したがって、私のWebサイトは、たとえばwss:// localhost:8080に接続しようとします。

IE11で動作しますが、「MSEdge」でエラーが発生します。

クロスゾーンリクエストは許可されていません

Win10 10240でこの問題が発生したため、「ローカルホストループバックを許可する」フラグがデフォルトで有効になっていますが、役に立ちませんでした。

CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"またはthis tility を使用すると、すべてが期待どおりに機能します。

それで、これは、「MS Edge」の新しいビルドでは、ループバックはhttpでは許可されているが、WebSocketでは許可されていないという場合ですか?もしそうなら、いくつかの回避策を作成し、ユーザーにシェルコマンドの実行や外部ユーティリティのダウンロードを強制しないことは可能ですか?

関連する質問: Windows10プレビューのMicrosoftEdge(Project Spartan)でローカルホストを開くことができません

7
azaviruha

いくつかの調査の後、私はエラーの原因を見つけました。エラーを再現するための私のリポジトリは次のとおりです: https://github.com/AZaviruha/ms-Edge-ws-strange

つまり、MSEdgeでnew WebSocketを呼び出すと、間違った「ローカル」で呼び出すと例外が生成されません-ホスト引数:

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 );
    }
}

このため、別のホストに接続するために「再試行」することはできません。

ちなみに、ローカルに存在しないホストを試してみると、例外が発生します!

5
azaviruha

Microsoft Edgeブラウザーで、タイトルバー(検索バー)に「About:flags」と入力します。引用符はありません。「ローカルホストループバックを許可する」機能にチェックマークを付けます。

Edge on Winビルド10240。(ビルド14393の時点でも引き続き機能します)

5
Narcarsiss

これは最近、Windows 10 Creator's Update(1703)を実行した後に再び発生しました。

しかし、修正は簡単でした。そうしなければならなかった

  1. @Narcarsissが言及している「ローカルホストループバックを許可する」機能を確認してください(更新で無効になったかどうかはわかりません。または、以前に自分で確認したことがありません)。
  2. アドレスバーでプロトコルを指定します( localhost:5000 /ではなくhttp:// localhost:5000 / )。

両方を行った後、MSEdgeでローカルホストサイトに再びアクセスできました。

1
jjacode