HTTP #8 – Las cabeceras de una petición http

Protocolo HTTP

Hasta ahora hemos visto una HTTP request en crudo y he comentado sobre los métodos HTTP GET y POST. Pero hay más cosas en una petición.

Un mensaje completo HTTP request se compone de:

[método] [URL] [versión]

[headers]

[body]

Una petición, por ejemplo,  a la web http://getbootstrap.com/ se realiza de la siguiente manera:

GET / HTTP/1.1

Host: getbootstrap.com

Connection: keep-alive

Cache-Control: max-age=0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36

Accept-Encoding: gzip,deflate,sdch

Accept-Language: es

Cookie: _gauges_unique_year=1; _gauges_unique=1; __utma=250622224.1275797093.1376343930.1376343930.1389217612.2; _ga=GA1.2.1275797093.1376343930; _gauges_unique_hour=1; _gauges_unique_day=1; _gauges_unique_month=1

If-Modified-Since: Tue, 01 Jul 2014 04:11:43 GMT

El mensaje es siempre texto en ASCII y la línea inicial define el método, la url y la versión HTTP.

La última sección, la del body, puede contener información como los parámetros de registro de una cuenta de usuario como hemos visto. Cuando subimos un fichero, esta sección del body puede ser bastante larga.

La sección central es la de las cabeceras o headers. Vemos, por ejemplo, que el navegador envía en su cabecera Accept-Language que prefiere recibir páginas en español (es). Como bootstrap no tiene versión en español pues nos ofrece su versión en inglés.

Hay muchas cabeceras definidas en la especificación HTTP.  Son todas opcionales a excepción de la cabecera host. Conviene echar un vistazo a las cabeceras antes de empezar a utilizarlas ya que algunas requieren de ciertas reglas. Por ejemplo la cabecera If-Modified-Since requiere de cierto formato de fecha, no vale cualquiera.

Algunas de cabeceras más usadas son:

  • Referer : Cuando el usuario hace click sobre un enlace, el navegador puede enviar la URL de la página de éste enlace.
  • User-Agent : Información sobre el navegador. Se puede consultar esta información para detectar los distintos navegadores y actuar en consecuencia.
  • Accept : Describe los MIME que el navegador puede aceptar. Se utiliza para la negociación de contenido.
  • Accept-Language : Indica el idioma en que se prefiere recibir el recurso.
  • Cookie : Contiene la información de las cookies, que suelen servir para identificar la sesión de un usuario y por lo tanto, mejorar la navegación del usuario.
  • If-Modified-Since : Contiene la fecha de cuándo el navegador recibió (y cacheó) por última vez el recurso. El servidor sólo tiene que volver a enviar el recurso si éste fue modificado desde esta fecha.

Se puede ver que algunas cabeceras tienen varios valores. Por ejemplo, Accept contiene los tipos MIME que prefiere ver, incluyendo HTML, XHTML, XML, y */* (que significa que prefiere HTML pero que si no es posible, que el servidor le envie y lo que tenga y ya tratará de representarlo)

También vemos que aparece q en algunas cabeceras. El valor de q es siempre un número entre 0.0 y 1.0 y representa el quality value o el grado de preferencia. Por defecto es 1.0. Número alto indica una alta preferencia.

HTTP #8 – Las cabeceras de una petición http

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s