Я только что провел быстрый тест с файлом PHP, temp.php
, который содержит эту часть кода:
<?php
echo "Hello, World!\n";
die;
Отправка HTTP-запроса GET в этот файл возвращает мне содержимоестраница:
$ telnet localhost 80
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /temp/temp.php HTTP/1.1
Host: localhost
HTTP/1.1 200 OK
Date: Thu, 08 Apr 2010 20:17:35 GMT
Server: Apache/2.2.12 (Ubuntu)
X-Powered-By: PHP/5.3.2RC2
Vary: Accept-Encoding
Content-Length: 14
Content-Type: text/html
Hello, World!
При отправке запроса HTTP HEAD не:
$ telnet localhost 80
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
HEAD /temp/temp.php HTTP/1.1
Host: localhost
HTTP/1.1 200 OK
Date: Thu, 08 Apr 2010 20:17:50 GMT
Server: Apache/2.2.12 (Ubuntu)
X-Powered-By: PHP/5.3.2RC2
Vary: Accept-Encoding
Content-Type: text/html
Не уверен, что это всегда так, хотя ...
Я помню ситуацию (некоторое время назад; был PHP 5.1) , в которой мне приходилось проверять себя в коде PHP, получал ли я запрос GET или HEAD.
РЕДАКТИРОВАТЬ: После дополнительного теста
Я только что сделал еще один тест: мой файл temp.php
теперь содержит это:
<?php
file_put_contents('/tmp/a.txt', $_SERVER['REQUEST_METHOD'], FILE_APPEND);
var_dump($_SERVER['REQUEST_METHOD']);
die;
Отправляя запрос HTTP HEAD, я получаю это:
$ telnet localhost 80
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
HEAD /temp/temp.php HTTP/1.1
Host: localhost
HTTP/1.1 200 OK
Date: Thu, 08 Apr 2010 20:21:30 GMT
Server: Apache/2.2.12 (Ubuntu)
X-Powered-By: PHP/5.3.2RC2
Vary: Accept-Encoding
Content-Type: text/html
Connection closed by foreign host.
Здесь нет вывода.
НО, глядя на /tmp/a.txtfile:
$ cat /tmp/a.txt
HEAD
Итак: никакой вывод, отправленный сервером, не означает, что ничего не сделано; -)