IE11 未发起 CORS 请求

Posted

技术标签:

【中文标题】IE11 未发起 CORS 请求【英文标题】:IE11 not initiating CORS request 【发布时间】:2014-12-28 05:46:11 【问题描述】:

通过摆弄,如果 IE11 是跨源的,它似乎不会发出 ajax 请求。如果资源 API 没有发送必要的标头,FF 和 Chrome 至少会发出请求并抛出错误。在我的例子中,资源 API(Web API 2.0)是 adding required headers,如果 IE 发出请求,这将很有帮助,但它没有。

客户的 JavaScript:

jQuery.support.cors = true;

$.fn.somePlugin = function () 
    $.ajax(
        url: apiUrl + '/articles/list/',
        type: 'GET',
        crossDomain: true
    ).done(
        function (data, textStatus, xhr) 
            console.log('hello world!');
        );
    return this;

上面的 ajax 请求在 Chrome 和 FF 中完美运行,但在 IE11 中却不行。

我试过了:

    添加对XDomainRequest.js 的引用,但没有任何效果。 在 IE 安全选项中启用跨源请求 - 尽管在每台客户端计算机上执行此操作似乎很奇怪。无论如何,它没有任何区别。

【问题讨论】:

我刚刚在 IE 11 上尝试了这个w3schools.com/ajax/tryit.asp?filename=tryajax_get,它可以工作。问题出在其他地方。 @PiotrŁużecki 我正在使用 jQuery $.ajax 和 $.getJSON 方法。不想将我的所有代码都更改为纯 XMLHttpRequest 对象。 @PiotrŁużecki 还有,我看不到您在示例代码中的何处提出跨域请求。 数据是否可能缓存在 IE 中,因此它没有发出请求?您可以尝试在调用中放置一个日期时间参数以破坏缓存。 @greatbear302 我在API requests from localhost to my Intranet are not made using IE11 看到类似的东西。您是否偶然注意到来自 localhost 的请求? 【参考方案1】:

我遇到了同样的问题。我无法使用 XMLHttpRequest()、$.ajax() 或 $.ajax 快捷方式检索任何 CORS 数据。问题原来是本地主机(IIS WinPro7)。每个 AJAX CORS 请求都经过预检,生成一个

在 Access-Control-Allow-Origin 标头中找不到来源 http://localhost

错误,后跟

XMLHttpRequest:网络错误 0x80070005,访问被拒绝

当我将 html 页面移动到网络服务器时,它运行良好。

【讨论】:

以上是关于IE11 未发起 CORS 请求的主要内容,如果未能解决你的问题,请参考以下文章

IE 11 上 CORS 预检请求的奇怪问题失败

来自 IE 或 Firefox 的 CORS 请求中没有 Referer 标头

CORS 请求在 Firefox 中中止,而不是在 Chrome 或 IE 中

Internet Explorer 11 不在 CORS 请求中添加 Origin 标头?

IE 11 跨域请求

在 Angularjs 中的 IE10+ 中访问被拒绝 CORs 请求,需要跨源资源共享错误(信息?)