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