Cuando los servidores web devuelven una página u otro contenido a los navegadores, además de la información propia del archivo, también envían variables en el encabezado HTTP de la respuesta, con el tamaño de la respuesta, tipo, fecha de modificación, tipo de compresión, etc.
Si quisiéramos agregar un valor personalizado al encabezado desde una página ASP.NET utilizando C#, podríamos hacer esto:
Response.AppendHeader("encabezado", "valor");
En Visual Basic .NET es prácticamente lo mismo, sólo debemos sacar el punto coma:
Response.AppendHeader("encabezado", "valor")
En PHP podemos hacerlo así:
header('encabezado: valor');
Y en JSP así:
response.setHeader("encabezado", "valor");
Estos encabezados también los podemos especificar en el HTML a través de la etiqueta meta utilizando el atributo http-equiv de la siguiente forma:
<meta http-equiv="encabezado" content="valor" />
Como se ve es muy sencillo agregar un encabezado HTTP a las respuestas del servidor web, sin importar el lenguaje que estemos utilizando.
Estos encabezados sirven para especificar diversas opciones, como por cuánto tiempo se puede guardar en la cache el contenido que se está enviando, o qué tipo de archivo se está descargando. Por este motivo es que me pareció que sería útil armar un resumen de los posibles valores y su formato, el cual detallo a continuación.
Allow
Aquí se pueden especificar los métodos HTTP soportados por el servidor web.
<meta http-equiv="allow" content="HEAD,GET,PUT,DELETE,OPTIONS" />
Cache-control
Le permite al desarrollador especificar en qué cache se almacenará la página, pudiendo elegir entre las siguientes opciones:
- Public: para guardarse en cache pública
- Private: sólo podrá guardarse en la cache privada
- No-cache: no se guardará en cache
- No-store: se guardará en cache pero no se archivará
<meta http-equiv="cache-control" content="no-cache" />
Content-disposition
Con este encabezado podemos especificar qué contenido está enviando el servidor y cómo debe mostrarse. Por ejemplo, podemos decirle al navegador que estamos enviando un documento .doc y que no queremos que se abra en el browser, sino que lo descargue.
Estos son los parámetros que podemos utilizar, separados por punto y coma:
- Tipo: puede ser attachment si queremos que el archivo se descargue o inline si queremos que se abra en el navegador
- Filename: nombre del archivo
- Creation-date: fecha de creación
- Modification-date: fecha de modificación
- Read-date: fecha de apertura
- Size: tamaño del archivo
<meta name="content-disposition" content="attachment; filename=miArchivo.docx" />
Content-encoding
Establece el encode utilizado en los datos devueltos. Por lo general es el tipo de compresión utilizado.
<meta http-equiv="content-encoding" content="gzip" />
Content-language
Especifica los idiomas y/o culturas utilizados en nuestra página.
<meta http-equiv="content-language" content="es-AR, en" />
Content-script-type
Establece el lenguaje de scripting que se utilizará por defecto en la página, por ejemplo, “text/VBScript” o “text/javascript”.
<meta http-equiv="content-script-type" content="text/javascript" />
Content-style-type
Establece el lenguaje de estilos que se utilizará por defecto en la página. Casi el 100% de las veces se utilizará CSS (Cascading Style Sheet) con el valor “text/css”, pero en un momento también se podía utilizar “text/javascript” para Netscape Navigator.
<meta http-equiv="content-style-type" content="text/css" />
Content-type
Esta es quizás la opción más utilizada, debido a que se usa para especificar el tipo de contenido de nuestra página y el charset que utiliza el mismo, en nuestro ejemplo, HTML con ISO-8859-1.
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
Date
Fecha y hora en que la página fue publicada.
<meta http-equiv="date" content="Thursday, 4-Feb-16 00:15:00 GMT" />
Default-style
Esto nos permite elegir, entre los distintos estilos de nuestro sitio, cuales deben aplicarse.
Por ejemplo, si tenemos dos estilos como se muestra a continuación, podemos elegir cual usar con este valor:
<link rel="stylesheet" type="text/css" href="azul.css" title="azul"> <link rel="alternate stylesheet" type="text/css" href="rojo.css" title="rojo"> <meta http-equiv="default-style" content="azul" />
Si queremos utilizar varios archivos css para cada estilo podemos hacerlo así:
<link rel="stylesheet" type="text/css" href="azul1.css" title="azul"> <link rel="stylesheet" type="text/css" href="azul2.css" title="azul"> <link rel="alternate stylesheet" type="text/css" href="rojo1.css" title="rojo"> <link rel="alternate stylesheet" type="text/css" href="rojo2.css" title="rojo"> <meta http-equiv="default-style" content="azul" />
Luego, para cambiar entre el estilo por defecto y el “rojo” debemos hacerlo a través de un script.
Expires
Especifica el día y hora exactos cuando expira la página almacenada en la cache y debe volver a descargarse en caso de querer volver a visualizarla.
<meta http-equiv="expires" content="Thursday, 4-Feb-16 00:15:00 GMT " />
Ext-cache
Este encabezado era utilizado por Netscape para especificar un archivo alternativo para guardar la cache del sitio. Ya no es usado.
<meta http-equiv="ext-cache" content="/carpeta/archivo.db; instructions=instrucciones del usuario" />
Imagetoolbar
Esta opción sólo funciona en Internet Explorer 6, y nos permite especificar si queremos ocultar la barra de herramientas que se muestra sobre las imágenes.
<meta http-equiv="imagetoolbar" content="no" />
Last-modified
Fecha y hora en que la página fue modificada por última vez.
<meta http-equiv="last-modified" content="Thursday, 4-Feb-16 00:15:00 GMT" />
Location
Permite establecer una nueva página a la que debe ir el navegador. Opcionalmente se puede establecer como primer valor la cantidad de segundos que debe esperar el browser antes de ir a la nueva página.
<meta http-equiv="location" content="5; segundaPagina.html" />
MSThemeCompatible
Esta opción sólo funciona en Internet Explorer 6 y nos permite especificar si queremos que Windows aplique el tema del sistema operativo a su página, cambiando el diseño de los botones, combos, etc.
<meta http-equiv="MSThemeCompatible" content="yes" />
Page-enter
Si el usuario está utilizando Internet Explorer, permite especificar una transición al ingresar en esta página.
<meta http-equiv="page-enter" content="RevealTrans (Duration=4, Transition=15)" />
Page-exit
Si el usuario está utilizando Internet Explorer, permite especificar una transición al salir de esta página.
<meta http-equiv="page-exit" content="RevealTrans (Duration=4, Transition=15)" />
Pics-label
Pics-label (Platform for Internet Content Selection) permite catalogar el contenido de la página dentro de grupos preestablecidos. En un principio se creó para ayudar a los padres y profesores a controlar el acceso a distintos contenidos desde los navegadores, pero tiene un gran problema: se depende de la objetividad y honradez del webmaster al momento de establecer estos valores.
Para calificar su sitio web según las 4 categorías del PICS se deben utilizar las siguientes tablas:
Desnudez (parámetro n):
- Ningún tipo de desnudez
- Vestimenta provocativa
- Desnudos parciales
- Desnudos frontales
- Exhibición provocativa de desnudos frontales, actividad sexual explícita, etc.
Violencia (parámetro v):
- Sin agresión, violencia natural o accidental
- Animales heridos o muertos, daño a objetos de apariencia real
- Personas y animales heridos o muertos, incitación a hacer daño a animales no peligrosos
- Personas heridas o asesinadas, asesinatos que muestran sangre
- Crueldad y violencia gratuita, tortura, violación
Sexo (parámetro s):
- No hay muestra actividad sexual
- Besos apasionados
- Roce sexual con la ropa puesta
- Roce sexual no explícito
- Actividad sexual explícita, crímenes sexuales
Lenguaje (parámetro l):
- Lenguaje popular inofensivo
- Palabras de mal gusto o palabras suaves para las funciones corporales
- Referencias anatómicas no sexuales
- Lenguaje vulgar, gestos obscenos, insultos
- Expresiones de odio extremo o lenguaje obsceno. Referencias sexuales explícitas
Un ejemplo de cómo poner en nuestra página, por ejemplo, que no hay actividad sexual, si hay lenguaje vulgar, no hay agresión y hay vestimentas provocativas sería de la siguiente forma:
<meta http-equiv="PICS-Label" content='PICS-1.1 "1996.05.04708:15-0798" r(n1 s0 v0 l3)' />
No es necesario establecer este valor en todas las páginas del sitio, sólo en la principal. Si algunas páginas tuvieran parámetros distintos a los establecidos en la principal, se pueden establecer nuevos valores para ellas.
Pragma
Esta opción fue establecida en el HTPP 1.0 y casi no se usa desde que dejó de ser soportada por Internet Explorar 5, pero se utilizaba para pedirle al navegador que no guarde la página en cache.
<meta http-equiv="pragma" content="no-cache" />
Refresh
Permite establecer cada cuántos segundos debe recargarse la página. También permite agregar (opcionalmente) el parámetro URL para establecer la página a la que debe dirigirse, en caso de no querer que se recargue la misma.
<meta http-equiv="refresh" content="20;URL=http://miSitio.com/segundaPagina.html" />
Resource-Type
Establece el tipo de recurso, casi siempre, “document”.
<meta http-equiv="resource-type" content="document" />
Set-cookie
Set-cookie nos permite guardar, obviamente, una cookie en el navegador del usuario especificando sus parámetros de la siguiente forma:
<meta http-equiv="set-cookie" content="nombre=valor; path=ruta; expires=Dia, DD-MMM-YY HH:MM:SS ZONA" />
- Nombre y valor: nombre y valor de la cookie, por ejemplo, SESION=23
- Path: ruta desde la cual se guardará la cookie (las subcarpetas tendrán acceso a la misma), por ejemplo, path=/
- Expires: Fecha en la que expirará la cookie
<meta http-equiv="set-cookie" content="SESION=23; path=/; expires=Thursday, 4-Feb-16 00:15:00 GMT" />
Site-enter
Si el usuario está utilizando Internet Explorer, permite especificar una transición al ingresar en el sitio.
<meta http-equiv="Site-Enter" content="RevealTrans (Duration=4, Transition=15)" />
Site-exit
Si el usuario está utilizando Internet Explorer, permite especificar una transición al salir del sitio.
<meta http-equiv="Site-Exit" content="RevealTrans (Duration=4, Transition=15)" />
Window-target
Es utilizado para especificar dónde debe mostrarse nuestra página, pudiendo utilizar cualquier target estándar de HTML como _self, _top, _parent, _blank, o el nombre de un frame o ventana flotante.
<meta http-equiv="window-target" content="_top" />
WWW-authenticate
Esta opción es utilizada por la autenticación básica.
<meta http-equiv="www-authenticate" content='Basic realm="Scientia"' />
X-UA-compatible
Utilizado en Internet Explorer desde la versión 8, este encabezado se usa para especificar el modo de documento compatibilidad de nuestra página.
Por ejemplo, si nuestra página es compatible con Internet Explorer 7 y 9, podemos agregar lo siguiente:
<meta http-equiv="x-ua-compatible" content="IE=7,9" />
Para ver los posibles modos de este parámetro les recomiendo consultar el MSDN Library
Espero que este artículo les sea de utilidad.
Suerte!