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