'' |
Cookies
Por Pedro Pascua
Introducción Una cookie no es más que un pequeño grupo de datos que guarda el browser asociado a una página concreta de un sitio web. Estos datos se utilizan normalmente para almacenar preferencias y otras variables de estado u opciones establecidas por un usario dentro de una página y poder actualizarlas cuando este usuario vuelva a visitar dicha página. Las cookies se diseñaron originalmente para la programación de scripts CGI y a bajo nivel se han implementado como una extensión del protocolo HTTP. Los datos de las cookies se transmiten automáticamente entre el browser y el servidor web de modo que los scripts CGI del servidor puedan leer y escribir los valores que han sido almacenados en el cliente. Como veremos después, mediante código JavaScript en el cliente, podemos leer y escribir cookies de forma sencilla utilizando la propiedad
Leyendo Cookies Cuando se utiliza la propiedad cookie en una expresión JavaScript, el valor que obtenemos es una cadena que contiene todas las cookies que se aplican al documento actual. La cadena es una lista de pares nombre=valor separados por comas, donde nombre es el nombre de la cookie y valor es su valor asignado. Una vez obtenida la lista, podemos utilizar las funciones String.indexOf() y string.substring() para obtener el valor de una cookie concreta, o bien usar la función String.split() para separar la cadena en cookies individuales. El valor de una cookie no debe contener comas, puntos y comas ni espacios en blanco. En caso de necesitar guardar cadenas que contengan estos caracteres, deberemos utilizar la función JavaScript escape() para codificar estos valores antes de guardarlos y su función inversa unescape() para decodificarlos cuando queramos leerlos.
Guardando Cookies Para asociar una cookie temporal con el documento actual, simplemente hay que asignar a la propiedad cookie una cadena de la forma nombre=valor. La próxima vez que leamos la propiedad cookie, el par nombre/valor aparecerá incluido en la lista de cookies del documento. Si queremos que la cookie permanezca para futuras sesiones del browser sobre la página, debemos incluir una fecha de caducidad. Para ello, la cadena que asignamos a la propiedad document.cookie debe tener la forma: nombre=valor ; expires=date . En este caso hay que asegurarse de que el valor de la fecha date, debe especificarse en el formato devuelto por la función Date.toGMTSting(). De modo análogo, podemos especificar para cada cookie las propiedades que hemos visto antes: ; path = path ; domain = dominio ; secure Para cambiar el valor de una cookie, basta con volver a establecer su valor del mismo modo que cuando se crea. Para borrarla, podemos volver a asignar a su nombre un valor arbitrario y una fecha de expiración ya pasada, con lo que el browser la eliminará por estar caducada.
Limitaciones Las cookies hay que entenderlas como una forma esporádica de guardar pequeñas cantidades de datos pero no como un mecanismo de comunicación más general y conviene usarlas con moderación. Hay que tener en cuenta que los browsers no suelen guardar más de 300 cookies en total, ni más de 20 por servidor web. Además, cada cookie no puede almacenar más de 4 Kb. Lo más restrictivo suele ser la limitación de 20 cookies por servidor, por lo que a veces hay que intentar guardar más de un dato por cada nombre de cookie en vez de asignar una cookie para cada variable. |