コード日進月歩

プログラミングの技術的なメモなど

WEBアプリケーションへのHTTPヘッダにアンダースコアを使うと到達前に弾かれることがある

表題の通り。毎度調べるんだけどちゃんとした理由は知らなかったのでまとめてみた。

理由

ざっと調べた限りの原理


  • RFC3875 4.1.18. の仕様としてヘッダは以下のように加工する仕様がある
    • 元の名前に付随して HTTP_ をつける
    • -_ に変換する
    • ヘッダをすべて大文字にする
  • 元から _ を使われると元からそうなのか、変換前なのか判断がつかない
  • 一律 _ を使うものは排除する

そのため、この問題はCGIプログラムでヘッダを利用することに限られているようで、実はヘッダに使う分には _ を使うことは問題がないらしい。(関連リンクと RFC7230 参照)

関連リンク