非常に単純なajaxリクエストがあります(以下を参照)。サーバーはCORSを使用しており、IE 10 +、Chrome、Firefox、Opera)で正常に動作します。オンMicrosoft Edgeしかし、それは失敗します
XMLHttpRequest:ネットワークエラー0x80070005、アクセスが拒否されました。
投稿 here 、 here 、 here 、および here を調査しましたが、有効な答えが見つかりません。これらの人々はIEに問題を抱えていますが、contentType(このgetには必要ありません)とcrossDomainを追加するとうまく機能します。
CanIUse は、CORSがEdgeで使用可能であると述べているようです。 IE9のダウンでも要求は失敗しますが、CanIUseはCORSの部分的なサポートのみを示しているため、理解できます。
これを修正する方法はありますか?
コード:
$.ajax({
crossDomain: true,
url: "http://localhost:2023/api/DoAction/test",
success: function (a) {
var res = JSON.parse(a);
alert(res.content);
},
error: function (a, e, r) {
alert(a.responseText);
}
});
更新
手がかりを提供する場合にさらに情報を追加するには-ajaxリクエストはAzureから来ており、OWINセルフホスティングを使用して作成されたlocalhost Webサイトに投稿します。これは珍しいことですが、クラウドサービスからデータを取得するソフトウェア(ローカルでのみ使用可能)に必要です。述べたように、それは他のすべてのブラウザーで正常に動作し、Edgeが唯一の問題です。
この問題は、Microsoft Edgeを使用している開発者にはもう存在しません。 localhostテストで問題が発生した場合は、about:flagsに移動し、localhostループバックを許可しますがチェックされます。
Microsoft Edgeは現在localhostテストをサポートしていません(そのまま)。ただし、ここで提供されるガイダンスに従って有効にすることができます: http://dev.modern.ie/platform/faq/how-can-i-debug-localhost/ 。
将来のリリースでこの問題の解決に取り組んでいます。
ビルド10158では、SpartanがMicrosoft Edgeに完全にブランド変更されたため、コマンドがわずかに変更されたため、Microsoft Edgeで有効にするには、管理者コマンドプロンプトから次のコマンドを実行します。
CheckNetIsolation.exe LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe
Ajax呼び出しの直前にこれを使用します。$ .support.cors = true;