PHP GET Request, отправка заголовков

Мне нужно выполнить запрос получения и отправить заголовки вместе с ним. Что я могу использовать для этого?

Главный заголовок, который мне нужно установить, является браузером. Есть ли простой способ сделать это?

Ответы

Ответ 1

Если вы используете cURL, вы можете использовать curl_setopt ($handle, CURLOPT_USERAGENT, 'browser description') для определения заголовка пользовательского агента запроса.

Если вы используете file_get_contents, ознакомьтесь с этой настройкой примера на странице руководства для file_get_contents:

// Create a stream
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n" .
              "User-agent: BROWSER-DESCRIPTION-HERE\r\n"
  )
);

$context = stream_context_create($opts);

// Open the file using the HTTP headers set above
$file = file_get_contents('http://www.example.com/', false, $context);

Ответ 2

Если вы запрашиваете страницу, используйте cURL.

Чтобы установить заголовки (в данном случае заголовок User-Agent в HTTP-запросе, вы должны использовать этот синтаксис:

<?php
$curl_h = curl_init('http://www.example.com/');

curl_setopt($curl_h, CURLOPT_HTTPHEADER,
    array(
        'User-Agent: NoBrowser v0.1 beta',
    )
);

# do not output, but store to variable
curl_setopt($curl_h, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($curl_h);

Ответ 3

Для этого можно использовать функцию header, например:

header('Location: http://www.example.com?var=some_value');

Обратите внимание:

Помните, что заголовок() должен быть вызван перед отправкой любого фактического выхода, либо с помощью обычных тегов HTML, пробелов строк в файле или из PHP. Это очень распространенная ошибка для чтения кода с include() или require(), функции или другую функцию доступа к файлам и пробелы или пустые строки, которые выводятся перед вызовом header(). Такой же проблема возникает при использовании одного PHP/HTML файл.