【问题标题】:Cross-subdomain AJAX works in Chrome, not IE跨子域 AJAX 适用于 Chrome,而不是 IE
【发布时间】:2012-06-23 23:41:00
【问题描述】:

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

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

【问题讨论】:

    标签: ajax internet-explorer cross-domain-policy


    【解决方案1】:

    看起来问题出在 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;
    }
    

    我从这里的主题讨论中提取了这段代码: http://graphicmaniacs.com/note/getting-a-cross-domain-json-with-jquery-in-internet-explorer-8-and-later/

    如果您认为自己遇到了同样的问题,请务必查看一下。

    【讨论】:

      猜你喜欢
      • 2014-12-30
      • 2012-02-14
      • 2015-09-01
      • 1970-01-01
      • 2013-04-22
      • 2016-01-29
      • 2013-03-24
      • 1970-01-01
      • 2013-10-19
      相关资源
      最近更新 更多