JQueryを使用してOriginをまたがるAjaxリクエストを送信し、IE11、ChromeおよびFirefoxでは正常に動作していますが、Edgeでは次のエラーで失敗します:
SCRIPT7002:XMLHttpRequest:ネットワークエラー0x80070005、アクセスが拒否されました。
おもしろいのは、私がFiddlerを使用して、何が起こっていたのか、またFiddlerがいつ実行され要求をキャプチャするのかを把握しようとして、すべてがうまくいくことです。 Fiddlerを閉じるかキャプチャを一時停止すると、すぐに失敗します。
サイトはローカルマシン(webpack-dev-server)で実行されており、ローカルネットワーク経由でWebAPIサービスにリクエストを送信しています。
私のホストファイルは次のように設定されています:
127.0.0.1 local.myapp.test
192.168.0.111 api.myapp.test
サイトとAPIは同じ場所でホストされるため、実稼働環境では問題になりませんが、開発とテストには非常に貴重です。
更新:
Eric Lawのおかげで、Fiddlerを有効にした場合の動作が異なる理由がわかりました。Fiddlerが行うプロキシ設定の変更とイントラネットゾーンのセキュリティレベルが低いため、Edgeはローカルイントラネットゾーンに切り替わりました。
ローカルイントラネットゾーンのセキュリティレベルを中高に上げてインターネットゾーンに一致させ、次にFiddlerを使用して、CORS要求に対してEdgeが動揺する理由を突き止めます。
FiddlerフォーラムでEric Lawrence(Fiddlerの作成者)が親切に提供してくれた回答を、逐語的に以下に記載します。
1つの可能性は、コンピューターがイントラネットゾーンで構成されており、そのイントラネットゾーンがプロキシ構成スクリプトに依存していることです: http://blogs.msdn.com/b/ieinternals/archive/2012/06/05/ the-local-intranet-security-zone.aspx 。 Fiddlerの実行中、プロキシ設定はFiddler自体に向けられます。
...イントラネットサイトをインターネットゾーンのサイトからのXHRのターゲットとして使用している場合、ここで働く別の要因があります。
Edgeは拡張保護モード(AppContainer)で実行されます。これには、インターネットゾーンプロセスからプライベートネットワークリソースへのアクセスをブロックする機能があります。 http://blogs.msdn.com/b/ieinternals/archive/2012/03/23/understanding-ie10-enhanced-protected-mode-network-security-addonsの「プライベートネットワークリソース」セクションを参照してください-cookies-metro-desktop.aspx 詳細については。
Local.myapp.test(SPAを実行しているURL)をインターネットオプションのローカルイントラネットゾーンに追加したところ、EdgeはFiddlerを必要とせずに満足しています。
私はこの質問に出会い、いくつかのオプションを試した後、私が働いていたのは、すべてのゾーンサイトエントリから作業中のドメインを削除することでした。 local.myapp.testを例に使用して、「anysubdomain」.myapp.testのエントリをチェックし、すべてのサブドメインまたはワイルドカードエントリを含むすべてのゾーンからそれらを削除しました。
インターネットオプション(IE 11)でsecurityタブを選択し、 "Local intranet"で "sites"をクリックしてから "Advanced "で、関連するドメイン参照を削除しました。
「信頼済みサイト」で「sites」をクリックし、関連するエントリをリストから削除しました
Edge内のabout:flagsで、「localhostループバックを許可する(これによりデバイスが危険にさらされる可能性があります)」がチェックされていることを確認します。