Опции контекста 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.
По умолчанию 1.1
, начиная с PHP 8.0.0;
до этой версии значение по умолчанию было 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
).