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
como padrão.
-
Cabeçalhos adicionais que deverrão ser enviados durante a requisição. Valores
nesta opção sobrescreverão 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 habilitada.
-
user_agent
string
-
Valor a ser enviado no cabeçalho User-Agent:
. Esta valor só
será utilizado se o user-agent não for especificado
na opção de contexto header
acima.
Por padrão, a configuração
user_agent
no 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 a URI será utilizada 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
como padrão.
-
follow_location
int
-
Segue os redirecionamentos feitos com o cabeçalho Location
.
Defina com 0
para desabilitar.
1
como padrão.
-
max_redirects
int
-
O número máximo de redirecionamentos a serem feitos. O valor 1
ou
inferiores significarão que os redirecionamentos não são feitos.
20
como padrão.q
-
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
-
Timeout 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 falhos 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 streams socket básicos
Opções de contextos adicionais podem ser suportadas em
transportes básicos
Em streams http://
, use
as opções de contexto do transporte tcp://
. Em streams
https://
, use as opções de contexto do
transporte ssl://
.
Nota:
Linha de status HTTP
Quando este empacotador de stream 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),
então o empacotador de stream automaticamente fará o redirecionamento para conseguir
uma resposta 200
(índice = 4
).