В этом примере у меня есть сервер с именем install64-7
к которому я install64-7
доступ, чтобы проверить наличие zip-файла, который не находится на сервере. Следующий PHP-код возвращает код возврата HTTP 200
даже если zip-файл не существует на сервере install64-7
.
$srcPath = "http://install64-7/TestApp.zip"; $ch = curl_init( $srcPath ); curl_setopt( $ch, CURLOPT_NOBODY, true ); curl_exec( $ch ); $retcode = curl_getinfo( $ch, CURLINFO_HTTP_CODE ); curl_close( $ch ); unset( $ch ); var_dump($retcode); exit;
Если я удалю опцию CURLOPT_NOBODY
, запрос даст 404
! посмотреть скриншот для второго запроса
$srcPath = "http://install64-7/TestApp.zip"; $ch = curl_init( $srcPath ); //curl_setopt( $ch, CURLOPT_NOBODY, true ); curl_exec( $ch ); $retcode = curl_getinfo( $ch, CURLINFO_HTTP_CODE ); curl_close( $ch ); unset( $ch ); var_dump($retcode); exit;
Как это возможно, чего мне не хватает? Что это за колдовство по поводу опции CURLOPT_NOBODY
? Спасибо за любую помощь
CURLOPT_NOBODY, установленный в TRUE, делает запрос HTTP HEAD по сравнению с «обычным» HTTP GET.
Если вы получаете другой код ответа, из-за этого просто потому, что сервер решает ответить по-другому – хотя он не должен соответствовать спецификации HTTP.