表題の通り。毎度調べるんだけどちゃんとした理由は知らなかったのでまとめてみた。
理由
ざっと調べた限りの原理
- RFC3875 4.1.18. の仕様としてヘッダは以下のように加工する仕様がある
- 元の名前に付随して
HTTP_
をつける -
を_
に変換する- ヘッダをすべて大文字にする
- 元の名前に付随して
- 元から
_
を使われると元からそうなのか、変換前なのか判断がつかない - 一律
_
を使うものは排除する
そのため、この問題はCGIプログラムでヘッダを利用することに限られているようで、実はヘッダに使う分には _
を使うことは問題がないらしい。(関連リンクと RFC7230 参照)