Opciones de contexto de HTTP
Opciones de contexto de HTTP — Listado de opciones de contexto de HTTP
Descripción
Opciones de contexto para los transportes http://
y
https://
.
Opciones
-
method
string
-
GET
, POST
, o
cualquier otro método HTTP que admita el servidor remoto.
Por omisión, GET
.
-
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_agent
string
-
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.
-
content
string
-
Datos adicionales a enviar tras las cabeceras. Típicamente se
utiliza con peticiones POST o PUT.
-
proxy
string
-
El URI que define la dirección de un servidor proxy (p.ej.
tcp://proxy.example.com:5100
).
-
request_fulluri
boolean
-
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_location
integer
-
Seguir las redirecciones de las cabeceras Location
. Establecer a
0
para deshabilitarlo.
Por omisión es 1
.
-
max_redirects
integer
-
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_version
float
-
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
.
-
timeout
float
-
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_errors
boolean
-
Obtener el contenido incluso con códigos de estado de error.
Por omisión es false
.
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
).