Manual JSP

Cookies

Las cookies son datos guardados por los navegadores a instancias del servidor. Los sitios web las utilizan con propósitos diversos: identificación de usuarios, sistemas de personalización, publicidad, estudios de perfil, etc. De hecho la mayor parte de los portales no funcionarían sin cookies, o al menos se verían obligados a implementar algún mecanismo sustitutorio, como por ejemplo la reescritura de parámetros en la URL. Su simplicidad y su gran utilidad hacen de las cookies uno de los recursos más utilizados en el desarrollo de aplicaciones Web.

Una cookie es un elemento de información de tamaño reducido enviado por el servidor para que el navegador lo guarde de manera que se pueda recuperar su valor en cualquier momento.

Las cookies nacen con la intención de proporcionar un mecanismo para almacenar en el ordenador de cada usuario datos con los que formar un hilo de comunicación entre las distintas páginas que participan en una aplicación Web. Uno de los casos más típicos es el que se produce cuando se registra en un sitio web. Cuando el mismo usuario visita de nuevo esas páginas, es reconocido de forma automática. Esto es así porque la primera vez que se identifico se creó una cookie en el ordenador local de dicho usuario con los datos necesarios para ser reconocido.

Esquema de funcionamiento de las cookies: el navegador manda al servidor las cookies que tiene guardadas; éste establece y/o elimina cookies enviando al navegador la información precisa; y finalmente el navegador almacena en el disco duro aquellas cookies que son permanentes.

Caducidad

Todas las cookies tienen un período de caducidad. Cuando este tiempo se cumple, la cookie desaparece. Teniendo en cuenta este comportamiento cabe distinguir cuatro tipos de cookies:

  • Cookies de sesión:desaparecen cuando se acaba la sesión, entendiendo por sesión el período de tiempo que un usuario está en un sitio web de manera continuada con la misma ventana del navegador.
  • Cookies permanentes: si la fecha de caducidad de la cookie se corresponde con un futuro lejano, se puede decir que la cookie que es permanente. Esto no es del todo cierto, como se ha observado, ya que los navegadores cuentan con un espacio limitado para almacenar cookies de manera que las más nuevas hacen desaparecer a las más viejas cuando dicho espacio está totalmente ocupado.
  • Cookies con fecha de caducidad:a veces los sitios web establecen cookies con una fecha de caducidad concreta. Por ejemplo, se puede utilizar una cookie para recordar a un cliente que existe una oferta. Esta cookie tendrá necesariamente la fecha de caducidad de la propia oferta, más allá de la cual no tienen ningún sentido que siga existiendo.
  • Cookies para borrar: borrar una cookie existente es como volver a escribirla con una fecha de caducidad anterior a la fecha actual.

Dominios y Subdominios

Toda cookie está vinculada con un dominio o subdominio. Además existe una restricción impuesta por el propio estándar de manera que no es posible acceder a cookies de otro dominio o subdominio que no sea el de la propia URL donde se encuentra la página web. Esto significa que una página web en la dirección www.idg.es, por ejemplo, sólo podrá acceder a las cookies vinculadas con los dominios www.idg.es y .idg.es. Como ya se verá más adelante, las distintas tecnologías, ya sean de cliente o de servidor, disponen de los mecanismos necesarios para implementar dicho vínculo.

Una cookie que es del dominio .idg.es será accesible desde cualquier URL que sea del tipo ordenadores .idg.es, internet.idg.es, o incluso, www.ordenadores.idg.es o www.internet.idg.es. La restricción se extiende desde el caso general hasta los casos particulares. Ahora bien, una cookie del dominio www.internet.idg.es no será accesible desde una página web que se encuentre bajo la dirección URL www.ordenadores.idg.es. Si se desea que ambos sitios compartan cookies no queda más remedio que éstas sean del dominio .idg.es, que es compartido por ambos.

Cookies con Java (Páginas JSP o Servlets)

Java es una de las tecnologías que más se utilizan en actualidad a la hora de desarrollar aplicaciones Web. Cada vez es mayor el número de portales y sitios web que se han construido utilizando páginas JSP o servlets. Evidentemente el API que se encuentra por detrás ofrece los recursos necesarios para poder leer y/o escribir cookies.

En el paquete estándar javax.servlet.http se encuentra la clase Cookie recogida de la siguiente forma:

public class Cookie implements Cloneable

El constructor de la clase se define como:

public Cookie(String name, String value);

El primer parámetro se corresponde con el nombre de la cookie y el segundo con el valor de la misma. El resto de los métodos de la clase cookie se divide en dos grupos: los método getXXX sirven para obtener información de la cookie; los métodos setXXX sirven para establecer las características de la cookie.