Access-Control-Allow-Headers ヘッダー
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
* Some parts of this feature may have varying levels of support.
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 セーフリストリクエストヘッダーに加えて、サーバーへの CORS リクエストにおいて X-Custom-Header という独自のヘッダーが対応していることを示しています。
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 を伴うプリフライトリクエストの例を見てみましょう。
リクエスト
まず、プリフライトリクエストは OPTIONS リクエストで、次のように 3 つのプリフライトリクエストヘッダー、 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://www.example.com
レスポンス
プリフライトリクエストで示された CORS リクエストが許可された場合、サーバーはプリフライトリクエストに対して、許可されたオリジン、メソッド、ヘッダーを示すメッセージで応答します。次に示すように、Access-Control-Allow-Headers にはリクエストされたヘッダーが記載されています。
HTTP/1.1 200 OK
Content-Length: 0
Connection: keep-alive
Access-Control-Allow-Origin: https://www.example.com
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE
Access-Control-Allow-Headers: Content-Type, x-requested-with
Access-Control-Max-Age: 86400
要求されたメソッドに対応していない場合は、サーバーはエラーを返します。
仕様書
| Specification |
|---|
| Fetch> # http-access-control-allow-headers> |