Forbidden request header (禁止リクエストヘッダー)
禁止リクエストヘッダーは、リクエストにおいてプログラム的に設定したり変更したりすることができない HTTP ヘッダーの名前と値の組み合わせです。レスポンスで変更することが禁止されているヘッダーについては、禁止レスポンスヘッダー名を参照してください。
このようなヘッダーを変更することは禁止されています。なぜなら、ユーザーエージェントがヘッダーを完全に制御できるからです。
例えば、 Date
ヘッダーは禁止リクエストヘッダーであるため、このコードではメッセージの Date
フィールドを設定することはできません。
fetch("https://httpbin.org/get", {
headers: {
Date: new Date().toUTCString(),
},
});
Sec-
で始まる名前は、 fetch()
などのヘッダーを開発者が制御できる API から、新しいヘッダーを作成するために予約されています。
禁止ヘッダーは次のいずれかです。
Accept-Charset
Accept-Encoding
Access-Control-Request-Headers
Access-Control-Request-Method
Connection
Content-Length
Cookie
Date
DNT
Expect
Host
Keep-Alive
Origin
Permissions-Policy
Proxy-
で始まるヘッダーSec-
で始まるヘッダーReferer
TE
Trailer
Transfer-Encoding
Upgrade
Via
X-HTTP-Method
、ただし禁止メソッド名 (CONNECT
,TRACE
,TRACK
) を含む場合のみX-HTTP-Method-Override
、ただし禁止メソッド名を含む場合のみX-Method-Override
、ただし禁止メソッド名を含む場合のみ
メモ: User-Agent
ヘッダーは禁止でしたが、そうではなくなりました。しかし、 Chrome はいまだに Fetch リクエストからこのヘッダーを削除します。(Chromium bug 571722 を参照)。
メモ: Referer
ヘッダーは、仕様書では禁止ヘッダーとしてリストアップされていますが、ユーザーエージェントがヘッダーを完全に制御できるわけではなく、ヘッダーはプログラムによって変更することができます。例えば、 fetch()
を使用する場合、 Referer
ヘッダーは、 referrer
オプションを介してプログラムによって変更することができます。
関連情報
- 用語集の用語: