web-dev-qa-db-ja.com

localhostへのWebSocketがMicrosoftEdgeで機能しない

単純なWebSocketサーバーを作成し、次のコードで接続しようとしています。

function test(name) {
    var ws = new WebSocket('ws://localhost:1234');
    ws.onopen = function () {
        ws.send('Hello from ' + name);
    }
}
test('Edge');

これは、Windows10のChromeおよびIE11からは正常に機能しますが、Edgeから試行すると、onopen関数が呼び出されず、代わりに次のエラーが発生します。

SCRIPT12029:WebSocketエラー:ネットワークエラー12029、サーバーとの接続を確立できませんでした

これは、Edgeのバージョン12.10240で発生しています。

here についても同様の問題が発生しましたが、エラーメッセージは異なります。

私が試したこと:

  • [〜#〜] ip [〜#〜]-localhost127.0.0.1、実際のIP
  • ローカルホストループバックを許可するフラグ-オンとオフの両方

別のマシンと通信しようとしても、問題は発生しません。

これはEdgeの欠陥ですか、それとも何か問題がありますか?

10
Motti

同様の問題が発生しましたが、実際にブラウザのページに移動したときでした。 localhostというフレーズを使用でき、それは正常に機能しましたが、マシンの名前を使用したときに機能しませんでした。私は このフォーラム を見つけました。管理者プロンプトで次のコマンドを実行するように提案されました。

CheckNetIsolation LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe

私のために働いた。あなたは同じ問題の何らかの形を見ているかもしれないと思った。

フォーラムが示唆しているように、Edgeを開いて「about:flags」に移動し、「ローカルホストループバックを許可する」にチェックマークを付けることでこれを行うこともできます(これ「開発者設定」の下の「デバイスを危険にさらす可能性があります)」。コマンドプロンプトにランダムなものを貼り付けるよりも少し安全だと感じるはずです。

編集:tresfが以下で指摘しているように、about:flagsのループバックチェックボックスが(修正として)機能しなくなったように見えるので、 CheckNetIsolationコマンドを使用して、Edgeを免除します。

13
Jools