PerlでのHTTPレスポンスヘッダ制御のあれこれ

Perlスクリプトにアクセスされた時に404とか返して嘘つくにはどうしたらいいんだろうと思ったのでメモ。


レスポンス行:
Status: (ステータスコード) (補足テキスト) \n
って感じでprintとかで出力。

ヘッダ行:
とりあえずそのまんまprintとかで出力してみる。上手くいったりいかなかったり。
たぶんサーバー情報関係とか、Content-Lengthとかそういうのは無理っぽそう。


ちなみにこの状態でPerlSendHeaderをOffにしたらmod_perlスクリプトではヘッダ出力が一切無効になった\(^o^)/


なおヘッダを完全に制御するにはスクリプト名の接頭に「nph-」を付けてNPHスクリプトとしてApacheに認識させます。
mod_perlNPHスクリプトとする場合はPerlSendHeaderをOffにして「nph-スクリプト名」でOK。
NPHスクリプトになるとprintとかでHTTPヘッダをそのまま書けますが、その反面HTTPヘッダをきちんと完全に書かないとクライアントが混乱する可能性があるので注意が必要です。