我正在寻找为什么添加这个功能的具体安全原因。 当我正在实现 CORS 并且可以看到返回所有标头,但是无法通过 JavaScript 访问它们时,这是一种非常困惑的时刻。
我正在寻找为什么添加这个功能的具体安全原因。 当我正在实现 CORS 并且可以看到返回所有标头,但是无法通过 JavaScript 访问它们时,这是一种非常困惑的时刻。
CORS的实现方式不会破坏在CORS之前,仅支持同源请求的假设。
在CORS之前的世界中,客户端可以通过脚本标签触发跨源请求,但它无法读取响应头。
为了确保CORS不会破坏这个假设,CORS规范要求服务器明确授权客户端读取这些头信息(通过Access-Control-Expose-Headers
头)。这样,未经授权的CORS请求的行为就像在CORS世界以前一样。
Content-Length
,请参见https://developer.mozilla.org/en-US/docs/Glossary/CORS-safelisted_response_header。 - diachedelic这是一个非常好的问题。浏览http://www.w3.org/TR/cors/#simple-response-header,并不明显为什么你想要或需要这样做。
CORS规范非常重视客户端和服务器之间进行预请求握手的概念,客户端请求连接类型,服务器响应允许连接类型,所以这可能只是其中的另一个方面。
默认情况下,Content-Length不是允许的标头,所以我遇到了同样的问题(后来需要访问WebDAV并需要修改允许的参数)... 对我来说,CORS一开始就没有多大意义,所以如果其中的大片内容是任性的,我也不会感到惊讶。
Access-Control-Expose-Headers
只在第一个请求中返回,相同CORS来源的连续请求不再获取它。你能帮我了解为什么吗? - Kanagavelu Sugumar