Опції контекста HTTP

Опції контекста HTTPСписок опцій контекста HTTP

Опис

Опції контекста для транспортних протоколів http:// та https://.

Опції

method string

GET, POST, або будь-який інший метод HTTP, що підтримується віддаленим сервером.

Початково - GET.

header string

Додаткові заголовки, що відправляються під час запиту. Значення в цих опціях будуть перевизначати інші опції (такі як 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.

Журнал змін

Версія Опис
5.3.4 Додано follow_location.
5.3.0 Параметр protocol_version підтримує декодування фрагментованої передачі, якщо встановлено 1.1.
5.2.10 Додано ignore_errors.
5.2.10 Параметр header тепер може бути числовим масивом (array).
5.2.1 Додано timeout.
5.1.0 Додано проксування протоколу HTTPS через HTTP-проксі.
5.1.0 Додано max_redirects.
5.1.0 Додано protocol_version.

Приклади

Приклад #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).

Прогляньте також