2

local.mydomain.comで実行しているサイトのローカルビルドがあります。AWSサーバーで実行されているapi.mydomain.comにajaxリクエストを送信し、JSONを返します。Chromeでは、APIを問題なく呼び出すことができます。しかし、IEでは、アクセスが拒否されます。

調査したところ、クロス(サブ)ドメインの制限のようです。しかし、私はこの制限が両方のブラウザに適用されるという印象を受けました。ここで何がうまくいかないのか、なぜ一部のブラウザでは機能し、他のブラウザでは機能しないのかを誰かが理解できますか?

4

1 に答える 1

7

問題は、IE8+ が使用するトランスポート オブジェクトにあったようです。jQuery は ActiveXObject (IE 用) または XMLHttpRequest (その他すべて) のいずれかを使用しますが、IE 8 以降では ajax 用に XDomainRequest が必要です。

できることは、次のように $.ajaxSettings.xhr を介してカスタム xhr オブジェクトを返すことです。

// override xhr for browser that use XDR
if ('XDomainRequest' in window && window.XDomainRequest !== null) {

  // override default jQuery transport
  jQuery.ajaxSettings.xhr = function() {
      try { return new XDomainRequest(); }
      catch(e) {
        console.log('test'); 
      }
  };

  // also, override the support check
  jQuery.support.cors = true;
}

このコードは、この件に関する議論から引っ張ってきました: http://graphicmaniacs.com/note/getting-a-cross-domain-json-with-jquery-in-internet-explorer-8-and-later/

同じ問題が発生していると思われる場合は、必ず確認してください。

于 2012-06-28T21:44:09.390 に答える