Это не является дубликатом, потому что я сделал curl следовать перенаправлениям и выводит 302 http код состояния
У меня есть этот код
<?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.
Таким образом, вам нужно добавить эту опцию curl, чтобы curl следовал за этим перенаправлением и в конечном итоге попадал на страницу 404.
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, 1);
По умолчанию этот параметр имеет значение 0
так что, как и в вашем случае, он не следует перенаправлению, а ответ, который вы получаете, это просто 302 или 307 или любой другой Facebook, который решит отправить как первый ответ. Установив его на 1
это будет следовать за редиректом.
больше информации здесь: http://curl.haxx.se/libcurl/c/CURLOPT_FOLLOWLOCATION.html
только что заметил, вы можете увидеть, что я говорю на скриншоте. первый ответ, который вы получаете является 307.
Браузер Chrome и этот инструмент на этом веб-сайте выполняют запрос на перенаправление, curl — нет, если не настроено, как описано выше.
Других решений пока нет …