在 HTTP CORS 规范中,Allow-Headers 和 Expose-Headers 有什么区别?

In the HTTP CORS spec, what's the difference between Allow-Headers and Expose-Headers?

在 HTTP CORS 规范中,5.6 Access-Control-Allow-Headers and 5.3 Access-Control-Expose-Headers 有什么区别?

[Allow-Headers] header indicates, as part of the response to a preflight request, which header field names can be used during the actual request

UPDATE:我希望有人会告诉我每个请求都会发送其中一个 headers (pre-flight)... 但是,还有 yet 另一个 header 用于此:5.9 Access-Control-Request-Headers

[Request-Headers] header indicates which headers will be used in the actual request as part of the preflight request

顺便说一句,我喜欢他们 (W3C) 精心措辞 5.9,这样 请求 header 可以有一个名为 _Something_ Request Header.[=17 的字段=]

我完全迷失在规范中,有没有图表可以让我更好地理解这个过程?

Access-Control-Allow-Headers

用于响应预检请求以指示在发出实际请求时可以使用哪些 HTTP header。

Access-Control-Expose-Headers

此 header 允许服务器白名单 header 允许浏览器访问。例如:

来源: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

只是为了澄清上面的评论,这些命名错误,这些命名并没有错误。

它们具有不同的功能。

  • Access-control-allow-headers 指定允许哪些 header 更改服务器状态。
  • 虽然 Access-control-expose-headers 有一个 get 方法 getResponseHeader() 方法 returns 特定响应的值 header。在 CORS 请求期间,getResponseHeader() 方法只能访问简单响应 headers。为了能够访问其他 header,您需要在此处指定它。