Access-Control-Allow-Headers

Access-Control-Allow-Headers 响应头用于响应包含 预检请求 的请求,该请求包括 Access-Control-Request-Headers,以指示在实际请求期间可以使用哪些 HTTP 头。

如果请求具有 Access-Control-Request-Headers 头,则此头是必需的。

注意: CORS 安全列表请求头 始终允许,并且通常不会列在 Access-Control-Allow-Headers 中(除非需要规避安全列表的 其他限制)。

头类型 响应头
禁止的头名称

语法

http
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 安全列表请求头 之外)。

http
Access-Control-Allow-Headers: X-Custom-Header

多个头

此示例显示了当 Access-Control-Allow-Headers 指定对多个头的支持时的用法。

http
Access-Control-Allow-Headers: X-Custom-Header, Upgrade-Insecure-Requests

绕过其他限制

尽管 CORS 安全列表请求头 始终允许,并且通常不需要在 Access-Control-Allow-Headers 中列出,但无论如何列出它们将绕过适用的 其他限制

http
Access-Control-Allow-Headers: Accept

预检请求示例

让我们来看一个涉及 Access-Control-Allow-Headers预检请求 示例。

请求

首先,请求。预检请求是包含三个预检请求头的一些组合的 OPTIONS 请求:Access-Control-Request-MethodAccess-Control-Request-HeadersOrigin

下面的预检请求告诉服务器我们想要发送一个带有在 Access-Control-Request-Headers 中列出的头(Content-TypeX-Requested-With)的 CORS GET 请求。

http
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
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 的浏览器中加载。

另请参阅