COOKIES


Como ya se ha comentado al inicio de este capítulo, HTTP es un protocolo sin estados. Esto significa que cada solicitud enviada por un cliente al servidor representa una conexión independiente. Por tanto, para realizar cualquier procesamiento que requiera más de un paso, será preciso utilizar algún tipo de mecanismo que permita mantener el «estado del proceso». Uno de estos posibles mecanismos es el empleo de cookies.

Las cookies permiten a las aplicaciones residentes en el servidor enviar bloques de información que son almacenados por el cliente. Una vez almacenado dicho bloque, las posteriores solicitudes realizadas por el cliente incluyen el valor actual de la información almacenada en el mismo. A este bloque de información se le denomina cookies. Un aspecto importante a tener en cuenta es que el empleo de esta técnica requiere que el software empleado por el cliente soporte el empleo de cookies (y que este mecanismo esté habilitado).


Estructura de una cookie
Una cookie es un bloque de información que está constituido por varios campos. Todos son opcionales, excepto el nombre de la cookie. Su estructura es:

Elemento
Contenido
nombre
Nombre de la cookie.
valor
Valor asociado a la cookie (se envía empleando la codificación URL).
fecha expiración
Fecha de expiración de la cookie.
path
Subconjunto de URL para los que la cookie es válida.
dominio
Rango de dominios para los que la cookie es válida.
segura
Indica si la cookie se debe transmitir exclusivamente sobre conexiones seguras HTTPS. 

Si se envía solamente el nombre, la cookie será eliminada en el cliente. También debe tenerse en cuenta que la información almacenada en una cookie es enviada como un campo en la cabecera de las solicitudes que el cliente envía hacia el servidor. Por tanto, una aplicación que desee emplear esta técnica debe realizar al menos dos pasos: en el primer paso se enviará la cookie, y en el segundo (y posteriores) se podrá consultar la información almacenada en la misma. Un error muy habitual cuando se emplea esta técnica consiste en
intentar dar valor e intentar consultar el contenido en el primer paso.