Access-Control-Allow-Headers 頭
Baseline 廣泛可用 *
HTTP Access-Control-Allow-Headers 響應頭用於響應預檢請求,指示在實際請求期間可以使用的 HTTP 頭。如果預檢請求包含 Access-Control-Request-Headers,則此頭是必需的。
注意: CORS 安全列表請求頭始終被允許,並且通常不會在 Access-Control-Allow-Headers 中列出,除非需要規避額外的安全列表限制。
語法
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 安全列表請求頭。
Access-Control-Allow-Headers: X-Custom-Header
支援多個頭
此示例展示了 Access-Control-Allow-Headers 在指定支援多個頭時的情況。
Access-Control-Allow-Headers: X-Custom-Header, Upgrade-Insecure-Requests
繞過 CORS 安全列表頭的額外限制
儘管CORS 安全列表請求頭始終被允許,並且通常不需要在 Access-Control-Allow-Headers 中列出,但無論如何列出它們將規避適用的額外限制。
Access-Control-Allow-Headers: Accept
處理預檢請求
讓我們看一個涉及 Access-Control-Allow-Headers 的預檢請求示例。
Request
首先,預檢請求是一個 OPTIONS 請求,它包含以下三個預檢請求頭的某種組合:Access-Control-Request-Method、Access-Control-Request-Headers 和 Origin。
下面的預檢請求告訴伺服器,我們希望傳送一個 CORS GET 請求,其中包含 Access-Control-Request-Headers 中列出的頭(Content-Type 和 X-Requested-With)。
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/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 |
瀏覽器相容性
載入中…