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
在 nghttp2 示例中看不到 Http-Settings 标头