HTTP/1.1 RFC は、「サーバーが応答でメッセージ本文を返してはならないことを除いて、HEAD メソッドは GET と同じです」と規定しています。Apache が RFC を尊重していることは知っていますが、モジュールはそうする必要はありません。私の質問は、mod_php5 はこれを尊重しますか?
私が尋ねる理由は、PHP 開発者がこれを自分で確認する必要があるという記事に出くわしたからです。
if (stripos($_SERVER['REQUEST_METHOD'], 'HEAD') !== FALSE) {
exit();
}
HEAD リクエストを受け取った後に mod_rewrite/redirect のような奇妙なことを試みていると言う人や、mod_php がデフォルトでスクリプトの残りの部分をまだ実行していると主張する 2002 年のような古いバグ チケットを除いて、私は 1 秒ほどグーグルで検索しましたが、あまり見つかりませんでした。そこで、PECL::HTTP を使用して簡単なテストを実行しました。
http_head('http://mysite.com/test-head-request.php');
持っている間:
<?php error_log('REST OF SCRIPT STILL RAN'); ?>
test-head-request.php で、スクリプトの残りの部分がまだ実行されているかどうかを確認しますが、実行されませんでした。
解決するにはこれで十分だと思いますが、もっと多くのフィードバックを得て、これについて疑問に思っている他の人の混乱を解消するのに役立つかもしれません. したがって、誰かが頭のてっぺんから知っている場合 (しゃれは意図していません)、または HEAD リクエストを受信するために使用する規則を持っている場合、それは素晴らしいことです。それ以外の場合は、後で C ソースを grep し、調査結果をコメントで返信します。ありがとう。