访问 CORS 请求的响应标头

Posted

技术标签:

【中文标题】访问 CORS 请求的响应标头【英文标题】:Accessing response headers on CORS request 【发布时间】:2015-11-13 05:47:05 【问题描述】:

我正在使用 fetch API 发出类似于下面 sn-p 的跨域请求

window.fetch('http://data.test.wikibus.org/magazines',  method: 'get')
      .then(function(response)  
        var linkHeader = response.headers.get('Link');
        document.querySelector('#link-header').innerText = 'The Link header is: ' + linkHeader;
      );
<span id="link-header"></span>

正如您所见,尽管在响应中返回了 Link 标头(以及其他一些标头),但它是不可访问的。我认为这是一个 CORS 问题,因为在本地请求中,所有标头都可以访问。

这是设计使然吗?有没有办法解决这个问题?

【问题讨论】:

【参考方案1】:

您请求的资源很可能缺少包含 Link 作为值的 Access-Control-Expose-Headers 标头。

请参阅https://fetch.spec.whatwg.org/#http-access-control-expose-headers 和https://fetch.spec.whatwg.org/#concept-filtered-response-cors,了解哪些标头从 CORS 响应中被过滤掉的详细信息。

【讨论】:

以上是关于访问 CORS 请求的响应标头的主要内容,如果未能解决你的问题,请参考以下文章

节点 JS - CORS 对预检请求的响应未通过访问控制检查:“Access-Control-Allow-Origin”标头的值

尽管配置了正确的 CORS 标头,但 301 响应“跨源请求被阻止”

React + ASP.Net Core 3:CORS 对预检请求的响应未通过访问控制检查:没有“Access-Control-Allow-Origin”标头

对 CORS 请求的 304 Not Modified 响应是不是应该包含 CORS 标头?

当请求标头具有 CloudFront + S3 网站的“接受编码”时,CORS 标头丢失

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