Cabeceras HTTP

Normalmente cuando desarrollamos para la web no prestamos atención a las  cabeceras HTTP y normalmente no es necesario. Pero cuando queremos ir un poco más allá y servir diferentes tipos de archivos,  trabajar con caché de datos o  crear buenas apis; entonces sí debemos prestar atención a estas cabeceras.

Con la extensión firebug para firefox es facil estudiar las cabeceras de petición y respuesta en web:

Encabezados de solicitud para la página de Google.es

GET / HTTP/1.1
Host: www.google.es
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
Cookie: PREF=ID=5fae46f8bb959bba:U=eda84a98adc6541c:FF=0:LD=es:C[...]

No vamos a entrar en una descripción de todos los campos .Sólo comentar que estamos haciendo una solicitud de tipo GET a www.google.es (host)  utilizando la versión 1.1 de HTTP a través de Firefox en Ubuntu (User-Agent). Además con Accept se le indica al servidor que tipos MIME acepta el cliente.

Encabezados de respuesta:

HTTP/1.1 200 OK 
Cache-Control: private, 
max-age=0 
Content-Encoding: gzip 
Content-Length: 29217 
Content-Type: text/html; 
charset=UTF-8 
Date: Sun, 19 Aug 2012 18:35:05 GMT 
Expires: -1 P3P: 
CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info." 
Server: gws 
Set-Cookie: NID=63=GPKfzT_Z0aAjFoZv7D8_dRgywRNJPoPbsXEHnsMFTW5gGdusCF9K7vhLF6rD5VyU51930azBxHBRBTFe5KdxsH1O54h_4ykwJz_4pA7Qd01JKw3DB6zeY4hlEiRwuZtXtcC6PAt5KC_Wz3WtG5iyqfeNWm7h0YJjzZuyep3A30pmoq_cF06qO1MOgHFllPgTgdzGaxGzexRD0nmZRQ; 
expires=Mon, 18-Feb-2013 18:35:05 GMT; 
path=/; 
domain=.google.es; 
HttpOnly X-Frame-Options: SAMEORIGIN 
X-XSS-Protection: 1; 
mode=block 
X-Firefox-Spdy: 1

Posemos ver que seguimos usando HTTP 1.1: Importante es el estado de esta respuesta : 200 OK .
Significa que el contenido ha sido correctamente localizado.
La dirección es la dirección URL que se solicitó, y Content-Type nos informa del formato.

Set-Cookie, que envía los cookies para utilizar con las solicitudes posteriores.
En definitiva, con las cabeceras HTTP se añade claridad de la comunicación entre el cliente y el servidor en relación
con la información que le estamos pidiendo, qué formatos entendemos, y así sucesivamente.

Ya desde PHP podemos acceder a las cabeceras de la petición desde la variable global $_SERVER  o enviarlas mediante la funcion header().

Por ejemplo:

//  Obtener accept y el method de  los headers:
echo «Accept: » . $_SERVER[‘HTTP_ACCEPT’] . «\n»;
echo «Method: » . $_SERVER[‘REQUEST_METHOD’] . «\n»;

// Enviar cabeceras al navegador:
header(‘Content-Type: text/html; charset=utf8’);
header(‘HTTP/1.1 404 Not Found’);

 

 

 

Posted in php