特に何かに困ったわけではないけどメモ。
とあるサイトでこんなレスポンスヘッダをみつけた。
HTTP/1.1 200 OK Date: Wed, 21 Oct 2009 02:31:27 GMT Server: Apache/2.2.3 (CentOS) Last-Modified: Wed, 14 Oct 2009 12:11:11 GMT ETag: "119565d-13ae0-475e40ef875c0" Accept-Ranges: bytes Content-Length: 80608 Connection: close Content-Type: text/html X-Pad: avoid browser bug
X-Pad ってなんぞや?と疑問に思ったのでぐぐってみたら PHP-users の過去ログに書いてあった。
[PHP-users 19224]X-Pad: avoid browserbugとは?
[PHP-users 19225]Re: X-Pad: avoidbrowserbugとは?
古いNavigatorのバグを回避するために、Apacheが
http://ml.php.gr.jp/pipermail/php-users/2003-December/019752.html
ダミーデータをパディングしています。
なるほど、古い Netscape Navigator のバグを回避するためのコードが Apache にあるんですな。ご丁寧に調べ方まで書いてあるのでありかを調べてみる。
$ find httpd-2.2.14 -name '*.[ch]' -exec grep -l 'X-Pad:' {} \; httpd-2.2.14/modules/http/http_filters.c $ grep -n 'X-Pad:' httpd-2.2.14/modules/http/http_filters.c 959: char tmp[] = "X-Pad: avoid browser bug" CRLF;
なるほどここにあった。ちょっとバージョン古くて行番号も違うけど Google Code Search だとここ → http://www.google.co.jp/codesearch/p?hl=ja&sa=N&cd=1&ct=rc#W6G7kfsfmHo/httpd-2.2.4/modules/http/http_filters.c&q=http_filters.c&l=770
コメントを読んでみると、どうやらバグというのはヘッダの終了を意味する CRLF がヘッダの先頭から数えて特定のバイト数目にあらわれるとパースに失敗する、というものらしい。なので CRLF の位置をバグに当たらない位置までずらすためにダミーデータで埋めている、と。
ブラウザに歴史あれば、ウェブサーバのソースコードにも歴史あり。それにしても、最近はてダにこんなことばっかり書いてるな。もう少しトレンドっぽいことも書かないとまずいかなーと思うのだけど、不思議と興味関心が沸くのはこういう、枯れたものというのか、重箱の隅をつつくようなことばかりだったりする。バッドノウハウを蓄積するのが性に合ってるのかもな。