Opciones de contexto HTTP
Opciones de contexto HTTP — Lista de opciones de contexto HTTP
Descripción
Opciones de contexto para los protocolos http://
y https://.
Opciones
-
method
string
-
GET, POST, o
cualquier otro método HTTP soportado por el servidor remoto.
Por omisión, vale GET.
-
Encabezados adicionales a enviar durante la petición.
Los valores de esta opción sobrescribirán otros valores
(como User-agent:, Host:,
y Authentication:),
incluso al seguir redirecciones Location:.
Por lo tanto, no se recomienda definir el encabezado
Host:, si follow_location
está activado.
Una cadena debe contener pares Clave: valor
delimitados por \r\n, por ejemplo:
"Content-Type: application/json\r\nConnection: close".
Un array debe contener una lista de pares Clave: valor, por ejemplo:
["Content-Type: application/json", "Connection: close"].
-
user_agent
string
-
Valor a enviar con el encabezado User-Agent:. Este valor
solo se utilizará si el agente de usuario no está
especificado en la opción de contexto header anterior.
Por omisión, se utilizará el valor de la opción de configuración
user_agent del archivo
php.ini.
-
content
string
-
Los datos adicionales a enviar después de los encabezados. Típicamente utilizados
durante las peticiones POST o PUT.
-
proxy
string
-
URI de la dirección del proxy (ej.
tcp://proxy.example.com:5100).
-
request_fulluri
bool
-
Cuando se define como true, la URI completa será utilizada al
construir la petición (ej.
GET http://www.example.com/path/to/file.html HTTP/1.0).
Aunque este formato de petición no es estándar, algunos servidores de
proxy lo requieren.
Por omisión, vale false.
-
follow_location
int
-
Sigue las redirecciones Location.
Debe definirse como 0 para desactivar.
Cuando esta opción no está definida, las redirecciones solo se siguen
para los códigos de respuesta 300, 301,
302, 303, 307 y
308. Definirla como 1 no es
equivalente: en ese caso se sigue cualquier respuesta que contenga un
encabezado Location, sea cual sea su código de respuesta.
-
max_redirects
int
-
El número máximo de redirecciones a seguir. El valor 1
o inferior significa que ninguna redirección será seguida.
Por omisión, vale 20.
-
protocol_version
float
-
Versión del protocolo HTTP.
Por omisión, vale 1.1 a partir de PHP 8.0.0; antes
de esta versión el valor por omisión era 1.0.
-
timeout
float
-
Tiempo máximo de espera para la lectura, en forma de float
(ej. 10.5).
Por omisión, se utilizará el valor de la opción de configuración
default_socket_timeout
del archivo php.ini.
-
ignore_errors
bool
-
Obtiene el contenido incluso al recibir un código de error.
Por omisión, vale false.
-
uri_parser_class
string o null
-
La clase a utilizar para analizar las URI. Cuando esta opción vale
null, se utiliza el comportamiento histórico basado en
parse_url(). Los valores aceptados son
Uri\Rfc3986\Uri (analizador conforme a la
RFC 3986) y Uri\WhatWg\Url (analizador conforme
al estándar WHATWG URL). Las implementaciones personalizadas escritas en
PHP no están soportadas.
Por omisión, vale null.
Ejemplos
Ejemplo #1 Obtención de una página y envío de datos POST
<?php
$postdata = http_build_query(
[
'var1' => 'algún contenido',
'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);
?>
Ejemplo #2 Ignora las redirecciones pero obtiene los encabezados y el contenido
<?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);
// información sobre los encabezados y metadatos del flujo
var_dump(stream_get_meta_data($stream));
// datos reales de $url
var_dump(stream_get_contents($stream));
fclose($stream);
?>
Notas
Nota:
Opciones de contexto del flujo subyacente
Opciones de contexto adicionales pueden ser
soportadas por el
transporte subyacente.
Para los flujos http://, consulte las
opciones de contexto del transporte tcp://.
Para los flujos https://, consulte las
opciones de contexto del transporte ssl://.
Nota:
Línea de estado HTTP
Cuando este manejador de flujo sigue una redirección,
el wrapper_data devuelto por la función
stream_get_meta_data() podría no contener
necesariamente la línea de estado HTTP que se aplica a los
datos de contenido en el í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',
...
La primera petición devuelve una 301
(redirección permanente), por lo tanto, el manejador de flujo
sigue automáticamente la redirección para obtener una respuesta
200 (índice = 4).