Опции HTTP-контекста

Опции HTTP-контекстаСписок опций HTTP-контекста

Описание

Опции контекста для транспортных протоколов http:// и https://.

Опции

method string

Методы GET, POST или любой другой HTTP-метод, который поддерживает удалённый сервер.

По умолчанию — GET.

header array или string

Дополнительные заголовки для отправки во время запросом. Значения в этой опции переопределяют другие значения (например, User-agent:, Host: и Authentication:), даже при следовании перенаправлениям заголовка Location:. Поэтому не рекомендуется устанавливать заголовок Host:, если включили опцию follow_location.

user_agent string

Значение для отправки в заголовке User-Agent:. Это значение будет использоваться, только если заголовок user-agent не указали в опции контекста header выше.

По умолчанию используется значение директивы user_agent из файла php.ini.

content string

Дополнительные данные для отправки после заголовков. Обычно используется с POST- и PUT-запросами.

proxy string

URI-идентификатор, который указывает адрес прокси-сервера (например, tcp://proxy.example.com:5100).

request_fulluri bool

Если для опции установили значение true, при формировании запроса будет использоваться весь URI (например, GET http://www.example.com/path/to/file.html HTTP/1.0). Хотя это нестандартный формат запроса, некоторые прокси-серверы его требуют.

По умолчанию false.

follow_location int

Опция указывает, следовать ли перенаправлениям заголовка Location. Чтобы отключить, устанавливают значение 0.

По умолчанию — 1.

max_redirects int

Максимальное количество перенаправлений, которым можно следовать. Значение 1 или меньше означает, что перенаправления не выполняются.

По умолчанию 20.

protocol_version float

Версия HTTP-протокола.

С PHP 8.0.0 значение по умолчанию — 1.1; до этой версии значение по умолчанию равнялось 1.0.

timeout float

Время ожидания на чтение в секундах в виде числа с плавающей точкой (float), например 10.5.

По умолчанию используется значение директивы default_socket_timeout из файла php.ini.

ignore_errors bool

Опция указывает, извлекать ли содержимое даже при неуспешных статусах завершения.

По умолчанию — false.

Примеры

Пример #1 Пример получения страницы и отправки данных методом POST

<?php

$postdata
= http_build_query(
array(
'var1' => 'некоторое содержимое',
'var2' => 'doh'
)
);

$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);

$context = stream_context_create($opts);

$result = file_get_contents('http://example.com/submit.php', false, $context);

?>

Пример #2 Пример игнорирования перенаправлений, но с получением заголовков и контента

<?php

$url
= "http://www.example.org/header.php";

$opts = array('http' =>
array(
'method' => 'GET',
'max_redirects' => '0',
'ignore_errors' => '1'
)
);

$context = stream_context_create($opts);
$stream = fopen($url, 'r', false, $context);

// Информация о заголовках
// и метаданные о потоке
var_dump(stream_get_meta_data($stream));

// Фактические данные в переменной $url
var_dump(stream_get_contents($stream));
fclose($stream);
?>

Примечания

Замечание: Опции контекста потока нижележащего сокета
Нижележащий транспортный протокол может поддерживать дополнительные опции контекста. Для потоков http:// смотрите описание опций контекста для транспортного протокола tcp://. Для потоков https:// смотрите описание опций контекста для транспортного протокола ssl://.

Замечание: Строка HTTP-статуса
Когда эта обёртка потока следует перенаправлениям, элемент wrapper_data, который возвращает функция stream_get_meta_data(), необязательно содержит строку HTTP-статуса, которая на самом деле относится к содержанию данных в индексе 0.

array (
  'wrapper_data' =>
  array (
    0 => 'HTTP/1.0 301 Moved Permanently',
    1 => 'Cache-Control: no-cache',
    2 => 'Connection: close',
    3 => 'Location: http://example.com/foo.jpg',
    4 => 'HTTP/1.1 200 OK',
    ...
Первый запрос вернул код 301 (постоянное перенаправление), поэтому обёртка потока автоматически последовала перенаправлению, чтобы получить ответ с кодом 200 (индекс = 4).