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.
-
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
, toda 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
inferiores 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(
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);
?>
Exemplo #2 Ignorando redirecionamentos mas trazendo os cabeçalhos e conteúdo
<?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);
// 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
).