Opciones de contexto de HTTP

Opciones de contexto de HTTPListado de opciones de contexto de HTTP

Descripción

Opciones de contexto para los transportes http:// y https://.

Opciones

methodstring

GET, POST, o cualquier otro método HTTP que admita el servidor remoto.

Por omisión, GET.

headerstring

Las cabeceras adicionales que se envían en la petición. Los valores de esta opción sobrescribirán los existentes (tales como User-agent:, Host:, o Authentication:).

user_agentstring

Valor de la cabecera User-Agent:. Solo se utilizará si el agente no se ha especificado en la opción de contexto header vista arriba.

Por omisión, se utiliza el valor del ajuste user_agent de php.ini.

contentstring

Datos adicionales a enviar tras las cabeceras. Típicamente se utiliza con peticiones POST o PUT.

proxystring

El URI que define la dirección de un servidor proxy (p.ej. tcp://proxy.example.com:5100).

request_fulluriboolean

Cuando se establece a true, se utilizará todo el URI para construir la petición, (es decir, GET http://www.example.com/path/to/file.html HTTP/1.0). A pesar de que es un formato de petición no estándar, algunos servidores proxy requieren que sea así.

Por omisión es false.

follow_locationinteger

Seguir las redirecciones de las cabeceras Location. Establecer a 0 para deshabilitarlo.

Por omisión es 1.

max_redirectsinteger

El número máximo de redirecciones a seguir. Un valor igual o menor a 1 indica que no se siga ninguna redirección.

Por omisión es 20.

protocol_versionfloat

La versión del protocolo HTTP.

Por omisión es 1.0.

Nota:

Las versiónes de PHP anteriores a la 5.3.0 no implementan la decodificación de transferencias fragmentadas. Si este valor es 1.1, es responsabilidad del programador cumplir con la versión 1.1.

timeoutfloat

El tiempo de espera de lectura en segundos, especificado por un float (p.ej. 10.5).

Por omisión, se utiliza el valor del ajuste default_socket_timeout de php.ini.

ignore_errorsboolean

Obtener el contenido incluso con códigos de estado de error.

Por omisión es false.

Historial de cambios

VersiónDescripción
5.3.4 Se añadió follow_location.
5.3.0 La opción protocol_version admite la decodificación de transferencias fragmentadas en caso de valer 1.1.
5.2.10 Se añadió ignore_errors.
5.2.10 El parámetro header ahora puede ser un array de índices numéricos.
5.2.1 Se añadió timeout.
5.1.0 Se añadió el soporte de HTTPS mediante proxies HTTP.
5.1.0 Se añadió max_redirects.
5.1.0 Se añadió protocol_version.

Ejemplos

Ejemplo #1 Obtener una página y enviar datos POST

<?php

$datos_post
= http_build_query(
array(
'var1' => 'contenido',
'var2' => 'doh'
)
);

$opciones = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $datos_post
)
);

$contexto = stream_context_create($opciones);

$resultado = file_get_contents('http://example.com/submit.php', false, $contexto);

?>

Ejemplo #2 Ignorar las redirecciones, aunque obtener las cabeceras y el contenido

<?php

$url
= "http://www.example.org/header.php";

$opciones = array('http' =>
array(
'method' => 'GET',
'max_redirects' => '0',
'ignore_errors' => '1'
)
);

$contexto = stream_context_create($opciones);
$flujo = fopen($url, 'r', false, $contexto);

// información de cabeceras y meta datos
// sobre el flujo
var_dump(stream_get_meta_data($flujo));

// datos reales en $url
var_dump(stream_get_contents($flujo));
fclose($flujo);
?>

Notas

Nota: Opciones de contexto del flujo de socket subyacente
Se pueden admitir opciones de contexto adicionales mediante el transporte subyacente. Para flujos http://, deben consultarse las opciones de contexto del transporte tcp://. Para flujos https://, deben consultarse las opciones de contexto del transporte ssl://.

Nota: Línea de estado HTTP
Cuando esta envultura de flujo sigue una redirección, los datos en wrapper_data devueltos por stream_get_meta_data() podrían no contener necesariamente la línea de estado HTTP que realmente se aplica a los datos del contenido del índice 0.

array ( 'wrapper_data' => array ( 0 => 'HTTP/1.0 301 Moved Permantenly', 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 devolvió un 301 (redirección permanente), de manera que la envoltura del flujo sigue automáticamente la redirección para obtener una respuesta de código 200 (índice = 4).
To Top