Опції контекста HTTP
Опції контекста HTTP — Список опцій контекста HTTP
Опис
Опції контекста для транспортних протоколів http://
та
https://
.
Опції
-
method
string
-
GET
, POST
, або
будь-який інший метод HTTP, що підтримується віддаленим сервером.
Початково - GET
.
-
Додаткові заголовки, що відправляються під час запиту. Значення в
цих опціях будуть перевизначати інші опції (такі як
User-agent:
, Host:
,
та Authentication:
).
-
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
boolean
-
Якщо встановлено значення в true
, то при створенні запиту буде
використовуватись повна URI. (наприклад
GET http://www.example.com/path/to/file.html HTTP/1.0
).
Хоча це нестандартний формат запиту, деякі проксі-сервера
вимагають його.
Початково false
.
-
follow_location
integer
-
Вказує чи потрібно слідувати переадресаціям заголовку
Location
. Для відключення встановіть 0
.
Початково 1
.
-
max_redirects
integer
-
Максимальна кількість переходів при переадресаціях. Значення
1
або менше, означає переходи без
переадресацій.
Початково 20
.
-
protocol_version
float
-
Версія HTTP-протоколу.
Початково 1.0
.
Зауваження:
В PHP до версії 5.3.0 не було впроваджено декодування фрагментованих
передач. Якщо це значення встановити в 1.1
, це
означає, що ви берете відповідальність бути сумісним з
1.1
.
-
timeout
float
-
Час очікування для читання в секундах, визначається через
float (наприклад 10.5
).
Початково використовується значення директиви
default_socket_timeout
з файлу php.ini.
-
ignore_errors
boolean
-
Отримувати вміст навіть при неуспішних кодах статуса.
Початково false
.
Приклади
Приклад #1 Отримання сторінки та відправлення POST-даних
<?php
$postdata = http_build_query(
array(
'var1' => 'some content',
'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 Permantenly',
1 => 'Cache-Control: no-cache',
2 => 'Connection: close',
3 => 'Location: http://example.com/foo.jpg',
4 => 'HTTP/1.1 200 OK',
...
Перший запит повертає 301
(постійну переадресацію),
так що потік обгортки автоматично слідує переадресації щоб отримати
відповідь 200
(index = 4
).