我有本地構建的我的網站在local.mydomain.com上運行。我正在向AWS服務器上運行的api.mydomain.com發送ajax請求,並返回JSON。在Chrome中,我可以調用API沒問題。但在IE中,我得到拒絕訪問。跨子域AJAX在Chrome中工作,而不是IE
經過研究,它似乎是跨(子)域限制。但我的印象是這個限制將適用於這兩種瀏覽器。任何人都可以看到這裏可能會出現什麼問題,以及爲什麼它可能在某些瀏覽器而不是其他的瀏覽器中工作?
我有本地構建的我的網站在local.mydomain.com上運行。我正在向AWS服務器上運行的api.mydomain.com發送ajax請求,並返回JSON。在Chrome中,我可以調用API沒問題。但在IE中,我得到拒絕訪問。跨子域AJAX在Chrome中工作,而不是IE
經過研究,它似乎是跨(子)域限制。但我的印象是這個限制將適用於這兩種瀏覽器。任何人都可以看到這裏可能會出現什麼問題,以及爲什麼它可能在某些瀏覽器而不是其他的瀏覽器中工作?
看起來問題出在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/
肯定拿如果你認爲自己遇到了同樣的問題,那就看看。