1. ホーム
  2. apache

[解決済み] なぜHTTPサーバーはHTTPヘッダー名にアンダースコアを使用しないのか?

2023-03-08 11:40:13

疑問点

私は、カスタム HTTP SESSION_ID ヘッダが nginx プロキシによって転送されないという問題がありました。

HTTP RFCではアンダースコアは禁止されていると聞いたのですが。

検索してみると、ほとんどのサーバで Apache nginx で違法と定義されている RFC2616 のセクション 4.2 に書いてあります。

RFC 822 [9]のセクション 3.1 で示されているのと同じ一般的な形式に従うこと。

RFC822 は言う。

フィールド名は、印刷可能なASCII文字で構成されなければなりません。 (すなわち、33.から126.の間の値を持つ文字。 10進数、コロンを除く)

アンダースコアは、ASCII表の10進数で33~126の範囲の文字95です。

何が足りないのでしょうか?

どのように解決するのですか?

CGIのレガシーなので、禁止されているわけではありません。参照:" HTTP ヘッダの欠落 (消滅) "を参照してください。

を明示的に設定しない場合 underscores_in_headers on; を設定しない場合、nginx はアンダースコアを含む HTTP ヘッダ(HTTP 標準では完全に有効です)を無言で削除します。これは、ヘッダを CGI 変数にマッピングする際に、ダッシュとアンダースコアの両方がアンダースコアにマッピングされるため、あいまいさを防ぐために行われます。