Это не дублирует, потому что я сделал завиток, следуя переадресации, а выход - 302 http status code
У меня есть этот код
<?php
$url="http://www.facebook.com/thisfburldoesnotexist";
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
curl_exec($handle);
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
echo $httpCode;
curl_close($handle);
?>
чтобы захватить код состояния некоторых страниц, но когда я пытаюсь получить статус этого http://www.facebook.com/thisfburldoesnotexist
ответ будет равен 302, но отчет Chrome http 404 при отладке
как я могу получить фактический 404 в Chrome?
Если я проверю URL с помощью этого инструмента http://www.websitepulse.com/help/tools.php, он сообщает, что я хочу: 404 - Не найдено
Что происходит, когда вы запрашиваете несуществующую страницу, на facebook отвечает страница со статусом 302 или 307. Затем он перенаправляется на другую страницу со статусом 404.
Поэтому вам нужно добавить этот вариант завивки, поэтому завиток будет следовать за перенаправлением и, в конечном счете, попадет на страницу 404.
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, 1);
По умолчанию этот параметр установлен в 0
, поэтому, как и в вашем случае, он не следует за перенаправлением, и ответ, который вы получаете, - это всего лишь 302 или 307 или любой другой facebook решает отправить в качестве первого ответа. Установив его в 1
он будет следовать за перенаправлением.
подробнее здесь: http://curl.haxx.se/libcurl/c/CURLOPT_FOLLOWLOCATION.html
просто заметили, вы действительно можете увидеть, что им говорит на скриншоте. первый ответ, который вы получаете, - 307.
Браузер Chrome и этот инструмент на этом веб-сайте выполняют запрос перенаправления, завиток не выполняется, если не сконфигурирован, как описано выше.