禁止ヘッダー名はプログラムから変更することができない 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
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() などでこのヘッダーを設定することが可能です。