Forbidden header name (禁止ヘッダー名)
禁止ヘッダー名はプログラムから変更することができない HTTP ヘッダーの名前、特に、 HTTP リクエストヘッダーの名前です (反対に、禁止レスポンスヘッダー名もあります)。
このようなヘッダーを変更することは禁止されています。なぜなら、ユーザーエージェントがヘッダーを完全に制御できるからです。Sec-
で始まる名前は、XMLHttpRequest
のような、開発者にヘッダーの制御を許可する Fetch を使った API から安全に新しいヘッダーを作成するために予約されています。
禁止ヘッダー名は Proxy-
や Sec-
で始まるもの、または以下の名前の 1 つです。
Accept-Charset
Accept-Encoding
Access-Control-Request-Headers
Access-Control-Request-Method
Connection
Content-Length
Cookie
Cookie2
Date
DNT
Expect
Feature-Policy
Host
Keep-Alive
Origin
Proxy-
Sec-
Referer
TE
Trailer
Transfer-Encoding
Upgrade
Via
メモ: User-Agent
ヘッダーは仕様としては禁止ではなくなりました (Firefox 43 で実装された forbidden header name list を参照)。 Fetch の Headers オブジェクトや、XHR の setRequestHeader() などでこのヘッダーを設定することが可能です。ただし、 Chrome は Fetch リクエストからこのヘッダーを暗黙的に削除します (Chromium バグ 571722 を参照)。
関連情報
禁止レスポンスヘッダー名 (用語集)