Forum und email

HTTP y HTTPS

PHP 3, PHP 4, PHP 5. https:// a partir de PHP 4.3.0

  • https://example.com
  • https://example.com/archivo.php?var1=val1&var2=val2
  • https://usuario:[email protected]
  • https://example.com
  • https://example.com/archivo.php?var1=val1&var2=val2
  • https://usuario:[email protected]

Permite acceso de sólo-lectura a archivos/recursos a través de HTTP 1.0, usando el método HTTP GET. Una cabecera Host: es enviada con la petición para gestionar hosts virtuales basados en nombres. Si ha configurado una cadena user_agent usando su archivo ini o en el contexto de secuencia, también ésta será usada en la petición.

Warning

Cuando se usa SSL, Microsoft IIS violara el protocolo, cerrando la conexion sin mandar un indicador close_notify. PHP avisara de esto con este mensaje "SSL: Fatal Protocol Error", cuando llegue al final de los datos. Una solucion a este problema es bajar el nivel de aviso de errores del sistema para que no incluya advertencias. PHP 4.3.7 y versiones posteriores detectan servidores IIS con este problema y suprime la advertencia. Si usais la funcion fsockopen() para crear un socket ssl://, tendreis que suprimir la advertencia explicitamente.

Las redirecciones han sido soportadas desde PHP 4.0.5; si se encuentra usando una versión anterior, necesitará incluir barras de cierre en sus URLs. Si es importante conocer la URL del recurso del cual proviene su documento (luego de que todas las redirecciones han sido procesadas), necesitará trabajar con la serie de cabeceras de respuesta devueltas por la secuencia.

<?php
$url 
'https://www.example.com/pagina_de_redireccion.php';

$da fopen($url'r');

/* Antes de PHP 4.3.0, use $http_response_header
   en lugar de stream_get_meta_data() */
$meta_datos stream_get_meta_data($da);
foreach(
$meta_datos['wrapper_data'] as $respuesta) {

  
/* ¿Fuimos redirigidos? */
  
if (substr(strtolower($respuesta), 010) == 'location: ') {
    
/* actualizar $url con la ubicación desde donde fuimos redirigidos */
    
$url substr($respuesta18);
  }

}

?>

Example#1 Descargar una página y enviar datos POST

<?php

$datos_post 
http_build_query(
    array(
        
'var1' => 'alguna cosa',
        
'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('https://example.com/submit.php'false$contexto);

?>

La secuencia permite acceso al cuerpo del recurso; las cabeceras son almacenadas en la variable $http_response_header. A partir de PHP 4.3.0, las cabeceras están disponibles mediante el uso de stream_get_meta_data().

Las conexiones HTTP son de sólo-lectura; no puede escribir datos o copiar archivos hacia un recurso HTTP.

Note: HTTPS es soportado a partir de PHP 4.3.0, si ha compilado el soporte para OpenSSL.

Resumen de Envoltura
Atributo Soporte
Restricción por allow_url_fopen Si
Permite Lectura Si
Permite Escritura No
Permite Adición No
Permite Lectura y Escritura Simultánea N/D
Soporte stat() No
Soporte unlink() No
Soporte rename() No
Soporte mkdir() No
Soporte rmdir() No

Opciones de contexto
Nombre Uso Predeterminado
method GET, POST, u otro método HTTP soportado por el servidor remoto. GET
header Cabeceras adicionales a ser enviadas durante la petición. Los valores en esta opción sobrescribirán otros valores (tales como User-agent:, Host:, y Authentication:).  
user_agent Valor a enviar con la cabecera User-Agent:. Este valor solo será usado si user-agent no es especificado en la opción de contexto header anterior. Parámetro php.ini: user_agent
content Datos adicionales a ser enviados después de las cabeceras. Típicamente usados con peticiones POST o PUT.  
proxy URI que especifica la dirección del servidor proxy. (p.ej. tcp://proxy.example.com:5100 ). El uso de proxys HTTPS (a través de proxys HTTP) solo funciona en PHP 5.1.0 o superior.  
request_fulluri Cuando es definido como TRUE, la URI completa será usada a la hora de construir la petición. (Es decir, GET https://www.example.com/ruta/hacia/archivo.html HTTP/1.0). Aunque éste es un formato de petición no-estándar, algunos servidores proxy lo requieren. FALSE
max_redirects El número máximo de redirecciones a seguir. El valor 1 o menor quiere decir que no se permiten las redirecciones. Agregada en PHP 5.1.0. 20
protocol_version Versión del protocolo HTTP. Agregada en PHP 5.1.0. 1.0
timeout Tiempo de espera de lectura en segundos, especificado por un valor float (p.ej. 10.5). Agregada en PHP 5.2.1. default_socket_timeout

Note: Opciones de contexto de las secuencias de socket interno Puede que se soporten opciones de contexto adicionales por el transporte implícito. Para secuencias https://, refiérase a las opciones de contexto para el transporte tcp://. Para secuencias https://, refiérase a las opciones de contexto del transporte ssl://.

Es posible enviar cabaceras personalizadas con una petición HTTP antes de la versión 5 aprovechando un efecto lateral en el manejo del parámetro INI user_agent. Defina user_agent con cualquier cadena válida (tal como el valor PHP/version predeterminado) seguido de una pareja retorno-de-carro/salto-de-línea y cualquier conjunto de cabeceras adicionales. Este método funciona en PHP 4 y todas las versiones posteriores.

Example#2 Envío de cabeceras personalizadas con una petición HTTP

<?php
ini_set
('user_agent'"PHP\r\nX-MiCabeceraPersonalizada: Foo");

$fp fopen('https://www.example.com/index.php''r');
?>

Resulta en el envío de la siguiente petición:

GET /index.php HTTP/1.0
Host: www.example.com
User-Agent: PHP
X-MiCabeceraPersonalizada: Foo