アレルゲン入り応答と名づけてみる修行

概要

主に PHP において、HTTP レスポンスボディに意図していないホワイトスペース、制御コードなどを含めてしまうこと。コーディングミスによるケースのほか、処理系自体の問題のケースもある。
ほとんどの場合問題にならないので気がつかないが、特定のケースで致命的な問題になる小さなモノが含まれることから命名

症例

PHP において、header() や session_start()、set_cookie() などヘッダに情報を挿入する関数を実行したときに "headers already sent" という警告が出て初めて問題があることに気がつくことが多い。また、ファイルダウンロード機能でバイナリファイルを readfile() 関数で落としたときにファイルが微妙に壊れていて問題があることに気づいたりする。
いずれも、見当違いの方向を調べてしまいがち*1

HTML を含むテキストデータの送信時は、ゴミを送信していることに気づかないことが多い。気が付いていなくても、意図していないものを送っていればそれはアレルゲンである*2

原因

PHP で タグの外に何もないはずが、改行やホワイトスペースなどが含まれているケースが見受けられる (特にファイル末の空行)。
BOM 付の UTF-8 ファイルで書かれた PHPスクリプトがうまく動かないのもこれ。

*1:原因を深く考えず、出てきたエラーメッセージでググったりとか

*2:いつか機能追加したりしたときに致命的エラーにつながる潜在的問題だったりする