为什么需要Access-Control-Expose-Headers?

我正在寻找具体的安全原因,为什么join。 这是一个WTH的时刻,当我正在实施cors,并可以看到所有的标题被返回,但我不能通过JavaScript访问它们..

CORS是以这样一种方式实现的,它不会破坏在CORS前,同源世界中做出的假设。

在CORS之前的世界里,客户端可能会触发一个交叉源请求(例如,通过脚本标签),但是它不能读取响应头。

为了确保CORS不会破坏这个假设,CORS规范要求服务器为客户端提供明确的权限(通过Access-Control-Expose-Headers头)读取这些头文件。 这样,未经授权的CORS请求就像在CORS之前的世界中一样。

这是一个很好的问题。 看看http://www.w3.org/TR/cors/#simple-response-header ,这不是很明显,为什么你想要或需要这样做。

CORS规范强调了这样一个想法:你必须有一个预先请求的握手,客户端请求一种连接types,服务器响应它允许它 – 所以这可能只是另一个方面。

默认情况下,内容长度不是允许的头部,所以我遇到了同样的问题(稍后当我需要访问WebDAV,必须修改允许的参数)。CORS真的没有什么意义(对我来说),所以如果它是反复无常的,那么我也不会感到惊讶。