Access-Control-Allow-Headers
Access-Control-Allow-Headers
响应头用于响应包含 预检请求 的请求,该请求包括 Access-Control-Request-Headers
,以指示在实际请求期间可以使用哪些 HTTP 头。
如果请求具有 Access-Control-Request-Headers
头,则此头是必需的。
注意: CORS 安全列表请求头 始终允许,并且通常不会列在 Access-Control-Allow-Headers
中(除非需要规避安全列表的 其他限制)。
语法
Access-Control-Allow-Headers: [<header-name>[, <header-name>]*]
Access-Control-Allow-Headers: *
指令
<header-name>
-
受支持的请求头的名称。头可以列出任意数量的头,用逗号分隔。
*
(通配符)-
值“
*
”仅在没有凭据的请求(没有 HTTP Cookie 或 HTTP 身份验证信息)中被视为特殊的通配符值。在有凭据的请求中,它被视为文字头名称“*
”,没有特殊语义。请注意,Authorization
头不能使用通配符,并且始终需要显式列出。
示例
自定义头
这是一个 Access-Control-Allow-Headers
头可能是什么样子的示例。它指示名为 X-Custom-Header
的自定义头受服务器 CORS 请求的支持(除了 CORS 安全列表请求头 之外)。
Access-Control-Allow-Headers: X-Custom-Header
多个头
此示例显示了当 Access-Control-Allow-Headers
指定对多个头的支持时的用法。
Access-Control-Allow-Headers: X-Custom-Header, Upgrade-Insecure-Requests
绕过其他限制
尽管 CORS 安全列表请求头 始终允许,并且通常不需要在 Access-Control-Allow-Headers
中列出,但无论如何列出它们将绕过适用的 其他限制。
Access-Control-Allow-Headers: Accept
预检请求示例
让我们来看一个涉及 Access-Control-Allow-Headers
的 预检请求 示例。
请求
首先,请求。预检请求是包含三个预检请求头的一些组合的 OPTIONS
请求:Access-Control-Request-Method
、Access-Control-Request-Headers
和 Origin
。
下面的预检请求告诉服务器我们想要发送一个带有在 Access-Control-Request-Headers
中列出的头(Content-Type
和 X-Requested-With
)的 CORS GET
请求。
OPTIONS /resource/foo
Access-Control-Request-Method: GET
Access-Control-Request-Headers: content-type,x-requested-with
Origin: https://foo.bar.org
响应
如果预检请求指示的 CORS 请求获得授权,则服务器将以包含允许的来源、方法和头的消息响应预检请求。下面我们看到 Access-Control-Allow-Headers
包含已请求的头。
HTTP/1.1 200 OK
Content-Length: 0
Connection: keep-alive
Access-Control-Allow-Origin: https://foo.bar.org
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE
Access-Control-Allow-Headers: Content-Type, x-requested-with
Access-Control-Max-Age: 86400
如果请求的方法不受支持,则服务器将返回错误。
规范
规范 |
---|
获取标准 # http-access-control-allow-headers |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。