Разработчику. Сборник рецептов PHP
Задавайте вопросы

Получение содержимого URL, требующее
отправки заголовков

Вернуться назад

Задача

Необходимо получить содержимое URL, требующего посылки специальных заголовков вместе с запросом к данной странице.

Решение

Для этого применяется расширение cURL и параметр CURLOPT_HTTPHEADER:

$c = curl_init('http://www.example.com/special-header.php');
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_HTTPHEADER, array('X-Factor: 12', 'My-Header:
Bob'));
$page = curl_exec($c);
curl_close($c);

Если расширение c URL недоступно, то применяйте метод addHeader() класса HTTP_Request:

require 'HTTP/Request.php';

$r = new HTTP_Request('http://www.example.com/special-header.php');
$r->addHeader('X-Factor',12);
$r->addHeader('My-Header','Bob');
$r->sendRequest();
$page = $r->getResponseBody();

Обсуждение

Расширение c URL имеет специальные параметры, CURLOPT_REFERER и CURLOPT_USERAGENT, позволяющие устанавливать заголовки запроса Referer и User-Agent:

$c = curl_init('http://www.example.com/submit.php');
curl_setopt($c, CURLOPT_VERBOSE, 1);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_REFERER, 'http://www.example.com/form.php');
curl_setopt($c, CURLOPT_USERAGENT, 'CURL via PHP');
$page = curl_exec($c);
curl_close($c);

См. также

Рецепт (Анализ файла протокола веб-сервера), объясняющий, почему слово referrer» часто ошибочно записывается как «referer» в контексте веб-программирования; документацию по функции url_setopt() на http://www.php.net/curl-setopt;

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования

Рейтинг Сайтов ДОСКИ.РУ