Опции HTTP-контекста
Опции HTTP-контекста — Список опций HTTP-контекста
Описание
Опции контекста для транспортных протоколов http://
и https://
.
Опции
-
method
string
-
Методы GET
, POST
или любой другой HTTP-метод, который поддерживает удалённый сервер.
По умолчанию — GET
.
-
Дополнительные заголовки для отправки во время запросом. Значения
в этой опции переопределяют другие значения (например,
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
).