Список опций HTTP-контекста

# Опции HTTP-контекста

Опции HTTP-контекста — Список опций HTTP-контекста

### Описание

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

### Опции

`method` string

  Методы `GET`, `POST` или любой другой HTTP-метод, который поддерживает удалённый сервер.

  По умолчанию — `GET`.

`header` array или string

  Дополнительные заголовки для отправки в запросе. Значения в этой опции переопределяют другие значения наподобие `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'  => '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 = [
        '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`).

### Смотрите также

- http://
- Контекстные опции сокета
- Опции SSL-контекста

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open