IE 在响应中看不到 CORS 标头

Posted

技术标签:

【中文标题】IE 在响应中看不到 CORS 标头【英文标题】:IE doesn't see CORS headers in response 【发布时间】:2016-07-25 15:18:52 【问题描述】:

根据 CORS 规范,我有一个 API 可根据请求将 Access-Control-Allow-Origin 标头附加到响应中:

HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
...

Application_BeginRequest 方法中。

FF、Chrome 和 Safari 看到这个和其他与 CORS 相关的标头,例如 Access-Control-Allow-Methods 标头没问题。

然而,在 IE 上,不仅响应标头不可见(即使它附加在 API 服务器代码中,我也可以在调试中看到),而且 OPTIONS 预检请求在任何地方也不可见。

有人遇到过这种行为吗?

【问题讨论】:

“OPTIONS 预检请求不可见”是什么意思?你的意思是预检不是由IE发送的吗?什么版本的 IE? IE 10 和 11。我有时在 10-20 次重试后看到它(JS 代码重试请求,以防在短暂延迟后失败)。 【参考方案1】:

经过漫长而漫长的调查和调试,结果发现问题与 CORS 完全无关 - IE 让它看起来像是 CORS,但实际上请求失败了,因为 API 返回了错误消息(但带有200 码)。

FML。

【讨论】:

以上是关于IE 在响应中看不到 CORS 标头的主要内容,如果未能解决你的问题,请参考以下文章

IE:“在 Access-Control-Allow-Origin 标头中找不到来源”使用启用 CORS 的 .NET Core 和 Angular 2

在 Firebase 中看不到请求标头的值?

在 nghttp2 示例中看不到 Http-Settings 标头

IE XdomainRequest CORS 问题

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

Laravel VueJS,Axios 看不到 CORS 标头,但 Postman 和浏览器可以