22

非常に単純な ajax リクエストがあります (以下を参照)。サーバーは CORS を使用しており、IE 10 以降、Chrome、Firefox、および Opera で正常に動作します。ただし、 Microsoft Edgeでは失敗します。

XMLHttpRequest: ネットワーク エラー 0x80070005、アクセスが拒否されました。

ここここここここの投稿を調査しましたが、うまくいく答えが見つかりません。これらの人々は 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 だけが問題です。

4

3 に答える 3

10

Microsoft Edge を使用している開発者にとって、この問題はもはや存在しないはずです。localhost のテストで問題が発生した場合は、about:flagsに移動し、 [Allow localhost loopback]がオンになっていることを確認してください。


Microsoft Edge は現在、(すぐに使える) localhost テストをサポートしていません。ただし、次のガイダンスに従って有効にすることもできます: http://dev.modern.ie/platform/faq/how-can-i-debug-localhost/

将来のリリースでこれを解決するために取り組んでいます。

于 2015-06-18T08:38:04.133 に答える
0

ajax 呼び出しの直前にこれを使用します: $.support.cors = true;

于 2015-08-21T12:32:50.717 に答える