Опции HTTP-контекста
Опции HTTP-контекста — Список опций HTTP-контекста
Описание
Опции контекста для транспортных протоколов http://
и https://.
Опции
-
method
string
-
Методы GET, POST
или любой другой HTTP-метод, который поддерживает удалённый сервер.
По умолчанию — GET.
-
Дополнительные заголовки для отправки в запросе. Значения
в этой опции переопределяют другие значения наподобие
User-Agent:, Host:
и Authentication:, даже
при следовании перенаправлениям заголовка Location:.
Поэтому лучше не устанавливать заголовок Host:,
если включили опцию follow_location.
Строковые значения указывают как пары Ключ: значение и разделяют последовательностью символов
\r\n, например:
"Content-Type: application/json\r\nConnection: close".
В массиве значения указывают как список пар Ключ: значение, например:
["Content-Type: application/json", "Connection: close"].
-
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(
[
'var1' => 'некоторое содержимое',
'var2' => 'doh',
]
);
$opts = [
'http' => [
'method' => 'GET',
'max_redirects' => '0',
'ignore_errors' => '1',
]
];
$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 = [
'http' => [
'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).