Access-Control-Allow-Headers 頭

Baseline 廣泛可用 *

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

* 此特性的某些部分可能存在不同級別的支援。

HTTP Access-Control-Allow-Headers 響應頭用於響應預檢請求,指示在實際請求期間可以使用的 HTTP 頭。如果預檢請求包含 Access-Control-Request-Headers,則此頭是必需的。

注意: CORS 安全列表請求頭始終被允許,並且通常不會在 Access-Control-Allow-Headers 中列出,除非需要規避額外的安全列表限制

頭型別 響應頭
禁止請求頭

語法

http
Access-Control-Allow-Headers: <header-name>
Access-Control-Allow-Headers: <header-name>, <header-name>
Access-Control-Allow-Headers: *

指令

<header-name>

支援的請求頭的名稱。該頭可以列出任意數量的頭,以逗號分隔。

* (萬用字元)

任意頭。值 * 僅對於不帶憑據的請求(不帶 HTTP cookie 或 HTTP 認證資訊的請求)作為特殊的萬用字元值。在帶憑據的請求中,它被視為字面頭名稱 *,沒有特殊語義。Authorization 頭不接受萬用字元,並且始終需要明確列出。

示例

實現自定義頭

下面是 Access-Control-Allow-Headers 頭的一個示例。它指示伺服器支援 CORS 請求中的自定義頭 X-Custom-Header,此外還支援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 安全列表頭的額外限制

儘管CORS 安全列表請求頭始終被允許,並且通常不需要在 Access-Control-Allow-Headers 中列出,但無論如何列出它們將規避適用的額外限制

http
Access-Control-Allow-Headers: Accept

處理預檢請求

讓我們看一個涉及 Access-Control-Allow-Headers預檢請求示例。

Request

首先,預檢請求是一個 OPTIONS 請求,它包含以下三個預檢請求頭的某種組合:Access-Control-Request-MethodAccess-Control-Request-HeadersOrigin

下面的預檢請求告訴伺服器,我們希望傳送一個 CORS GET 請求,其中包含 Access-Control-Request-Headers 中列出的頭(Content-TypeX-Requested-With)。

http
OPTIONS /resource/foo
Access-Control-Request-Method: GET
Access-Control-Request-Headers: content-type,x-requested-with
Origin: https://foo.bar.org

Response

如果預檢請求指示的 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

如果請求的方法不受支援,伺服器將響應錯誤。

規範

規範
Fetch
# http-access-control-allow-headers

瀏覽器相容性

另見