2012-06-21 26 views
2

我有本地構建的我的網站在local.mydomain.com上運行。我正在向AWS服務器上運行的api.mydomain.com發送ajax請求,並返回JSON。在Chrome中,我可以調用API沒問題。但在IE中,我得到拒絕訪問。跨子域AJAX在Chrome中工作,而不是IE

經過研究,它似乎是跨(子)域限制。但我的印象是這個限制將適用於這兩種瀏覽器。任何人都可以看到這裏可能會出現什麼問題,以及爲什麼它可能在某些瀏覽器而不是其他的瀏覽器中工作?

回答

7

看起來問題出在IE8 +希望您使用的傳輸對象上。 jQuery使用ActiveXObject(用於IE)或XMLHttpRequest(所有其他),但IE 8及以上版本需要XDomainRequest for ajax。

你可以做的是通過$ .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/

肯定拿如果你認爲自己遇到了同樣的問題,那就看看。

相關問題