Опции 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
).