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 或 Firefox 的 CORS 请求中没有 Referer 标头
CORS 请求在 Firefox 中中止,而不是在 Chrome 或 IE 中