Lista de opções de contexto do HTTP

# Opções de contexto do HTTP

Opções de contexto do HTTP — Lista de opções de contexto do HTTP

### Descrição

Opções de contexto dos transportadores `http://` e `https://`.

### Opções

`method` string

  `GET`, `POST` ou qualquer outro método HTTP suportado pelo servidor remoto.

  `GET` é o padrão.

`header` array ou string

  Cabeçalhos adicionais que devem ser enviados durante a requisição. Valores nesta opção sobrescrevem outros valores (como `User-agent:`, `Host:`, e `Authentication:`), mesmo ao seguir redirecionamentos `Location:`. Portanto, não é recomendado definir um cabeçalho `Host:`, se `follow_location` estiver habilitado.

  Os valores em string devem ser pares de `Chave: valor` delimitados por `\r\n`, por exemplo,. `"Content-Type: application/json\r\nConnection: close"`. Os valores em array devem ser uma lista de pares de `Chave: valor`, por exemplo, `["Content-Type: application/json", "Connection: close"]`.

`user_agent` string

  Valor a ser enviado no cabeçalho `User-Agent:`. Este valor só é utilizado se o user-agent não for especificado na opção de contexto `header` acima.

  Por padrão, a configuração user_agent do php.ini é utilizada.

`content` string

  Dados adicionais a serem enviados depois dos cabeçalhos. Tipicamente utilizado em requisições POST ou PUT.

`proxy` string

  URI que especifica o endereço do servidor de proxy (ex.: `tcp://proxy.example.com:5100`).

`request_fulluri` bool

  Quando definido como `true`, todo o URI será utilizado na construção da requisição (ex.: `GET http://www.example.com/path/to/file.html HTTP/1.0`). Mesmo não sendo um formato padronizado de requisição, alguns servidores de proxy o exigem.

  `false` é o padrão.

`follow_location` int

  Segue os redirecionamentos feitos com o cabeçalho `Location`. Defina com `0` para desabilitar.

  `1` é o padrão.

`max_redirects` int

  O número máximo de redirecionamentos a serem feitos. O valor `1` ou inferior significam que os redirecionamentos não serão feitos.

  `20` é o padrão.

`protocol_version` float

  Versão do protocolo HTTP.

  O padrão é `1.1` a partir do PHP 8.0.0; antes dessa versão o padrão era `1.0`.

`timeout` float

  Limite de tempo de leitura em segundos, especificado com um float (por exemplo, `10.5`).

  Por padrão, a configuração default_socket_timeout do php.ini é utilizada.

`ignore_errors` bool

  Retorna o conteúdo mesmo que códigos de status de falha sejam retornados.

  `false`.

### Exemplos

Exemplo #1 Buscando uma página e enviando dados pelo método POST

    <?php

    $postdata = http_build_query(
        [
            'var1' => 'some content',
            '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);

    ?>

Exemplo #2 Ignorando redirecionamentos mas trazendo os cabeçalhos e conteúdo

    <?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);

    // informação de cabeçalho e metadados
    // sobre o fluxo
    var_dump(stream_get_meta_data($stream));

    // dados reais no $url
    var_dump(stream_get_contents($stream));
    fclose($stream);
    ?>

### Notas

> Nota: Opções de contextos de soquetes de fluxo básicos
> Opções de contextos adicionais podem ser suportadas em transportes básicos Em fluxos `http://`, use as opções de contexto do transporte `tcp://`. Em fluxos `https://`, use as opções de contexto do transporte `ssl://`.

> Nota: Linha de status HTTP
> Quando este empacotador de fluxo faz um redirecionamento, o `wrapper_data` retornado pela função stream_get_meta_data() pode não conter necessariamente a linha de status HTTP, que atualmente se aplica ao conteúdo no índice `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',
>         ...

> A primeira requisição retornou `301` (redirecionamento permanente), com isso o empacotador de fluxo fará o redirecionamento automaticamente para conseguir uma resposta `200` (índice = `4`).

### Veja Também

- http://
- Opções de contexto de Socket
- Opções de contexto de SSL

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