在 IE10 的 AJAX CORS 请求中添加自定义标头时,CORS 请求中止

Posted

技术标签:

【中文标题】在 IE10 的 AJAX CORS 请求中添加自定义标头时,CORS 请求中止【英文标题】:CORS request aborted when adding a custom header in AJAX CORS request in IE10 【发布时间】:2016-08-27 10:09:34 【问题描述】:

当我将此标头添加到我的 jQueryAjax 请求时:

headers: 
    "Authorization": "SomeValue"

在服务器上,我将 Authorization 标头添加到

h.Add("Access-Control-Allow-Headers","Authorization");

这在其他浏览器中运行良好,但在 IE10 中不行!

一句话:

如果我注释掉身份验证标头,刷新页面,向我的 web api 发出常规 GET 请求,默认情况下不会触发预检请求。 在该请求之后,我取消注释我的 jquery 请求中的自定义标头,保存,刷新页面,发出带有自定义标头的新请求,然后成功执行!

在 IE 10 Web 开发者工具中,我可以看到一条错误消息:

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

SEC7118: XMLHttpRequest 用于 https://mywebapi.dev/api/authentication/cors/ 需要跨域 资源共享 (CORS)。 cors SEC7119: XMLHttpRequest 为 https://mywebapi.dev/api/authentication/cors/ 需要 CORS 预检。 cors SCRIPT7002:XMLHttpRequest:网络错误 0x80070005,访问权限为 拒绝。

请求立即中止,它永远不会到达消息处理程序!

【问题讨论】:

我也有同样的问题,IE10 只是忽略了Authorization 标头。有什么解决办法吗? 您必须提供更多信息。默认情况下,在 Options 请求期间不发送授权标头。 【参考方案1】:

here 已经回答了这个问题,@EricLaw 在 anser/comment 部分对此进行了解释。我现在找到了,因为我用谷歌搜索了错误代码

SCRIPT7002

我所做的是:

    我去了托管我的 webapi 的 IIS,并且 单击/标记托管我的 webapi 的 web 应用程序和 转到 SSL 设置-> 选中忽略客户端证书!。

现在预检 CORS 请求使用 IE10 进行。

【讨论】:

以上是关于在 IE10 的 AJAX CORS 请求中添加自定义标头时,CORS 请求中止的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Ajax cors IE10 不工作

对cors的理解

跨域资源共享 CORS 详解

跨域资源共享 CORS 详解

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

IE11 未发起 CORS 请求