Cookies 1 ¿Que son las cookies? ¿Que son las cookies? Una cookie es una variable almacenada por el servidor en la computadora del cliente. Cada vez que la misma computadora solicita una página con un browser, junto con la solicitud el browser envía la cookie al servidor, Con el browser envía la cookie al servidor, Con JavaScript se pueden crear cookies y leer su valor. 2 Cookies LLos datos se almacenan en un archivo de texto en forma de pares: d t l hi d t t f d Name=value. Si son varios pares se encuentran separados mediante punto y coma ; p p p y ; Existen especificaciones para su implementación : los browsers deben poder almacenar al menos 300 cookies en total y al menos 20 cookies por servidor ó dominio ocupando hasta 4KB cada una dominio ocupando hasta 4KB cada una. Los usuarios pueden bloquear las cookies ó incluso destruirlas por lo que no se puede depender ciegamente de este mecanismo. 3 Atributos • Por default las cookies se destruyen cuando se cierra la ventana del browser a menos que se especifique una fecha de caducidad mediante el atributo expires. ib i o Si se especifica una fecha futura la cookie persiste hasta esa fecha o Para destruir una cookie se especifica una fecha pasada. • Por default las cookies solo pueden ser leidas por la página web que las creó a menos q e se especifiq e alg no de los sig ientes parámetros creó a menos que se especifique alguno de los siguientes parámetros: o path – para permitir que mas de una página del mismo sitio pueda acceder a las cookies. o domain – para permitir el acceso a varios servidores de un mismo dominio. 4 ¿Como se envían al browser? ¿Como se envían al browser? Cuando una cookie se envía del servidor hacia el browser, se agrega una línea Cuando una cookie se envía del servidor hacia el browser se agrega una línea adicional en el header HTTP. Por ejemplo: Content-type: text/html Set-Cookie: foo=bar; path=/; expires Mon, 09-Dec-2008 13:46:00 GMT Esta línea en el header provoca que el browser almacene una cookie llamada foo. El valor de foo es bar. El path / representa el URL desde el que se puede usar la cookie. el slash significa que es válido para todo el sitio y tiene una fecha de caducidad de Dic 9, 2008 a la 1:46 pm GMT. , p 5 ¿Cómo se envían al servidor? ¿Cómo se envían al servidor? Cuando la cookie se envía del browser hacia el servidor no se envían todos los campos: Content-type: text/html Cookie: foo=bar Con esta línea se informa al servidor que existe una cookie llamada foo cuyo valor es bar. Múltiples cookies cookieName4=value; cookieName3=value; cookieName2=value; cookieName1=value 6 JavaScript: Creación de Cookies JavaScript: Creación de Cookies var expireDate = new Date(); i D D () expireDate.setMonth(expireDate.getMonth()+6); … document.cookie = “foo=" + “bar”+ ";expires=" + expireDate.toGMTString(); Con esto se crea una cookie llamada foo cuyo valor es bar. Con esto se crea una cookie llamada foo cuyo valor es bar Con caducidad de 6 meses. 7 Lectura de cookies Lectura de cookies LLa lectura mas simple es cuando sabemos que el l i l d b l browser solo almacena una cookie: foo=document.cookie.split("=")[1]; 8 Método Split() Método Split() El método split permite dividir un “string” en componentes especificando el separador El resultado se guarda en un arreglo especificando el separador. El resultado se guarda en un arreglo. EJEMPLO var fecha= '24/02/2009'; var elem = fecha.split( = fecha split('/'); / ); dia= elem[0]; //24 mes= elem[1]; //02 [ ]; // año= elem[2]; //2009 9 Lectura de múltiples cookies Lectura de múltiples cookies var thisCookie = document.cookie.split("; "); S Separa las diferentes cookies l dif t ki for (var i=0; i<thisCookie.length; i++) { outMsg += "Cookie name is '" + thisCookie[i].split("=")[0]; outMsg += "', and the value is '" + thisCookie[i].split("=")[1] + "'<br />"; } thisCookie[i].split("=")[0]; thisCookie[i].split("=")[1]; nombre de la cookie valor de la cookie valor de la cookie 10 JavaScript: Borrar Cookies JavaScript: Borrar Cookies var expireDate = new Date(); expireDate.setDate(expireDate.getDate()‐1); … document.cookie = “foo="+ ";expires=" + expireDate.toGMTString(); Con esto se borra una cookie llamada foo 11