Opciones de contexto de HTTP — Listado de opciones de contexto de HTTP
Opciones de contexto para los transportes http:// y https://.
Versión | Descripció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 .
|
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);
?>
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.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).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', ...