El tiempo de cocción de las cookies.


Si estás programando una Web en la que necesitas utilizar cookies y en algunos PC’s te funcionan pero en otros no, puede ser que los clientes tengan mal configurada la hora.

Actualización: añadido un posible workaround.

Si alguna vez has tenido que utilizar cookies seguramente te habrás topado con su, aparentemente, extraño funcionamiento: Supongamos que tenemos una serie de ordenadores con clientes web y todos ellos tienen las cookies habilitadas: puede darse el caso de que en algunos ordenadores vayan bién y en otros no.

Antes de empezar a actualizar versiones de navegadores o de sistemas operativos (y antes de tirarnos por la ventana ante la desesperación 😎 debemos hacernos la siguiente pregunta: ¿Tienen todos estos ordenadores la hora bién configurada? Es muy común, sobre todo en la instalación del Windows, configurar erróneamente la localización del ordenador: me he encontrado casos de ordenadores que en España estaban configurados como si estuvieran en México. ¿Y por qué es importante eso si el ordenador tiene la hora correcta? Pues porque, aunque la hora local es correcta, la hora GMT (Greenwitch Meridian Time o la hora del meridiano de Greenwitch) se calcula en base a la hora local teniendo en cuenta la diferencia horaria. Por ejemplo:

  • Ordenador bien configurado:

    Hora local: 14:27:34.

    Localización: España -> Diferencia horaria: +1 h.

    Hora GMT: 13:27:34.

  • Ordenador mal configurado:

    Hora local: 14:27:34.

    Localizacion: México -> Diferencia horaria: -6 h.

    Hora GMT: 20:27:34.

Y la hora GMT es muy importante para las cookies porque su fecha de expiración se expresa en horario GMT. Así que si tenemos mal configurada la localización puede ser que nuestro cliente Web crea que las cookie han caducado cuando aun no lo están.
Siguiendo con nuestro ejemplo: Si la fecha de expiración de la cookie esta puesta a las 15:27:34 GMT, en el primer ordenador aun faltan dos horas para que la cookie caduque, mientras que en el segundo hace cinco que caducó.

Dado el hecho de que las Webs que mantienen información de estado (ya usen PHP o ASP) se basan en gran medida en el uso de cookies, el tener bien configurado el reloj de nuesto PC es esencial para el correcto funcionamiento de estas Webs.

Posible workaround:

Como es imposible controlar si todos los clientes que se conectan a nuestra web tienen bien configurado el reloj de su ordenador, se trataría de dar un tiempo de vida a la cookie muy grande (como de un año o más, por si el cliente no tiene mal la hora sino el dia o el mes) e introducir la fecha de expiración en la propia cookie. Entonces, cuando el cliente enviara la cookie al servidor, este podría mirar si la cookie ha caducado, y borrarla en tal caso. Es decir, pasamos la responsabilidad de borrar la cookie del cliente al servidor. Es una “solución” muy evidente y poco eficiente pero es la única que se me ocurre en la que no intervienen los clientes.

Además se podría hacer que las cookies no caducaran. De esta manera las cookies funcionarían bien incluso en los PC que sufren del efecto 2000 (os acordais del follón que hubo y ahora casi parece un cuento de hadas 8-). Pero aún no lo he provado y no se que tal se portarán los navegadores con las cookies que no caducan.


PS: Mamones, mirad vuestros relojes!! X’D

Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=535 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.