跨子域AJAX适用于Chrome,而非IE

Tho*_*mas 2 ajax internet-explorer cross-domain-policy

我在local.mydomain.com上运行了我的网站的本地版本.我正在向api.mydomain.com发出ajax请求,该请求在AWS服务器上运行并返回JSON.在Chrome中,我可以调用API没问题.但是在IE中,我得到了Access Denied.

经过研究,它似乎是一个跨(子)域限制.但我认为这种限制适用于两种浏览器.任何人都可以看到这里可能出现的问题以及为什么它可能在某些浏览器中运行而不是其他浏览器?

Tho*_*mas 7

看起来IE8 +希望您使用的传输对象中存在问题.jQuery使用ActiveXObject(用于IE)或XMLHttpRequest(所有其他),但IE 8及更高版本需要XDomainRequest用于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;
}
Run Code Online (Sandbox Code Playgroud)

我在这里讨论了这个问题:http: //graphicmaniacs.com/note/getting-a-cross-domain-json-with-jquery-in-internet-explorer-8-and-later/

如果你认为你遇到同样的问题,一定要看一下.