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)でローカルホストを開くことができません
いくつかの調査の後、私はエラーの原因を見つけました。エラーを再現するための私のリポジトリは次のとおりです: 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 );
}
}
このため、別のホストに接続するために「再試行」することはできません。
ちなみに、ローカルに存在しないホストを試してみると、例外が発生します!
Microsoft Edgeブラウザーで、タイトルバー(検索バー)に「About:flags」と入力します。引用符はありません。「ローカルホストループバックを許可する」機能にチェックマークを付けます。
Edge on Winビルド10240。(ビルド14393の時点でも引き続き機能します)
これは最近、Windows 10 Creator's Update(1703)を実行した後に再び発生しました。
しかし、修正は簡単でした。そうしなければならなかった
両方を行った後、MSEdgeでローカルホストサイトに再びアクセスできました。