Можно ли использовать get_headers после сокрытия реферера?
Я использую этот код для получения ответа HTTP:
$url = "http://example.com/";
$headers = get_headers($url);
$header = substr($headers[0], 9, 3);
echo = $header;
это прекрасно работает, но мне нужно скрыть реферер, поэтому я использую http://href.li/ примерно так:
$url = "http://href.li/?http://example.com/";
$headers = get_headers($url);
$header = substr($headers[0], 9, 3);
echo = $header;
что приводит к 200 OK
Код состояния HTTP независимо от статуса последней страницы. Можно ли вообще получить заголовок с последней страницы? Или есть другой подход для достижения этой цели, в то же время используя сервис скрытия реферера?
1 ответ
Вам не нужен сторонний сервис, чтобы скрыть вашего реферера в запросе такого рода, вы можете установить его так, как вам нужно, однако вы не можете сделать это с помощью get_headers
функция. Вы могли бы сделать это с file_get_contents
а также stream_context_create
, В вашем случае, я думаю, что это будет что-то вроде этого:
$URL = 'http://example.com/';
$Context = stream_context_create(array(
'http' => array(
'method' => 'HEAD',
'header' => 'Referer: '
)
));
file_get_contents($URL, false, $Context);
$ResponseHeaders = $http_response_header;
$header = substr($ResponseHeaders[0], 9, 3);
echo $header;
stream_context_create
создает контекст потока с любыми опциями для указанного вами запроса и file_get_contents
делает запрос, используя этот контекст. После этого скрипт проверяет $http_response_header
это своего рода магическая переменная, которая заполняется после HTTP-запросов к HTTP-URL-адресам и доступна только в локальной области, т. е. сразу после вызова функции, выполняющей HTTP-запрос, но не, скажем, в другой выполняемой функции после этого. Содержание $http_response_header
в основном так же, как результат get_header()
функция.
(Вы также можете использовать GET
в приведенном выше примере, но если вам не нужно тело ответа, HEAD
просто получает заголовки без тела. Кстати, PHP get_headers
выдает GET
запрос, который извлекает весь ответ, включая тело, которое затем отбрасывается. Но иногда принимающий сервер или скрипт не может обработать HEAD
запрашивает или выполняет некоторые действия иначе, чем GET
запрос - вы должны действительно попробовать и посмотреть, что работает для вас.)