数か月前、「SESSION_ID」という名前のカスタムHTTPヘッダーに問題があり、nginxプロキシによって転送されませんでした。
HTTPプロトコルのRFCに従って、アンダースコアは禁止されていると言われました。
グーグルでは、 Apache や nginx のようなほとんどのサーバーを違法と定義しています。
RFC2616 セクション4.2
rFC 822 [9]のセクション3.1で与えられたものと同じ一般的な形式に従う
および RFC822 は
フィールド名は、印刷可能なASCII文字(つまり、33から126の間の値を持つ文字、コロンを除く10進数)で構成する必要があります)
アンダースコアはASCIIテーブル(33〜126の範囲に属する)の10進文字です。何が欠けていますか?
彼らは禁止されていません。それはCGIのレガシーです。 ここ
underscores_in_headers on;
を明示的に設定しない場合、nginxはアンダースコア付きのHTTPヘッダーを静かにドロップします(HTTP標準に従って完全に有効です)。これは、ダッシュとアンダースコアの両方がそのプロセス中にアンダースコアにマッピングされるため、ヘッダーをCGI変数にマッピングする際のあいまいさを防ぐために行われます。
ヘッダーフィールドにアンダースコアを使用できます( RFC 7230、sec。3.2。 )が、実際には一般的ではありません。