2012-06-18 11 views
18

Quiero almacenar datos en los que el usuario haga clic en una cookie que nunca debe ir al servidor. Es como una sesión de datos añadidos, que quiero persistir en las sesiones, ya que los datos simplemente continúan agregando a la cookie, y se almacena durante mucho tiempo, y solo se elimina cuando el usuario elimina el historial de navegación. La cookie es solo una cookie de cliente puro y nunca tiene que ir al servidor, ya que no necesito los datos generados por el usuario en el servidor, así que quiero deshacerme de la sobrecarga adicional que crea la cookie al enviar y recibir mensajes entre ellos. navegador y servidor. ¿Es posible lograr esto?Cookies exclusivas para el cliente: cookie que no va al servidor

+0

¿Nos puede el código para lo que han intentado mostrar? –

+1

Según el navegador de destino, puede consultar localStorage - http://paperkilledrock.com/2010/05/html5-localstorage-part-one/ – Archer

+0

'localstorage' está descartado, ya que necesito admitir navegadores más antiguos, de todos los principales. Mark: he logrado toda la funcionalidad, excepto por "cookies del lado del cliente puro". Estoy creando la cookie con el par nombre - valor apropiado, la fecha de caducidad y la ruta usando el código que encontré en el modo peculiar. Puedo controlar la cookie usando javascript. Solo que no puedo lograr la parte de "cookie solo para el cliente". Espero que tengas mi pregunta? –

Respuesta

4

Si la compatibilidad del navegador es una preocupación, puede utilizar un poco de javascript para envolver varias tecnologías diferentes. Las versiones anteriores de IE admiten (supprise supprise) una versión propietaria de localstorage llamada userData (no creo que sea exactamente igual, pero debería hacer lo que necesita).

Un script de envoltura como http://www.jstorage.info/ o https://github.com/marcuswestin/store.js debe hacer lo que necesita hacer.

+0

Muchas gracias @Bulk, voy a dar una oportunidad. Pero personalmente preferiría una solución de cookies independiente del navegador, en ese caso mis fallas se reducirían al límite de tamaño impuesto por el navegador en la cookie y las cookies desactivadas en el navegador (los datos del usuario/almacenamiento local también pueden ser desactivados y Supongo que este caso de falla puede ser excluido). –

+1

No puedo decirlo con certeza Estoy 99% seguro de que no hay una solución basada en "cookies" para esto, pero no dudes en seguir buscando :) –

2

Estoy 100% seguro de que no hay forma de obligar a las cookies a estar solo en el lado del cliente, siempre se envían al servidor. Sin embargo, es posible hacer lo contrario: cookies del lado del servidor (no legibles por javascript) configurando el indicador HttpOnly en la cookie.

8

Sé que es un poco tarde para usted, pero esta respuesta es para todos los que tienen el mismo problema.

1) Con HTML5 puede usar web storage.

2) (¡Solo una idea! - ¡no probado!) Puede definir una cookie (a través de javascript en el cliente) y establecer el atributo "seguro". En este caso, la cookie solo se enviará al servidor en conexiones HTTPS. Para asegurarse de que la cookie nunca abandona el navegador, nunca se abre una conexión HTTPS ;-)

Actualización:

También podría simplemente establecer la ruta de la cookie a un camino que en realidad no lo hace existe.

document.cookie="name=value;path=/notExistingPath"; 
+0

Tuve la misma idea con 2), pero no funciona. No puede acceder a las cookies seguras de JS (al menos no en FF). 1) funciona muy bien! – Lodovik

+1

Oh, claro. Olvidé el acceso js. Traté de encontrar una solución también para navegadores que aún no admitan el almacenamiento web. Podría tratar de establecer un valor de ruta de cookies para una ruta que no existe. Entonces la cookie nunca debería ser enviada. (no testet. pls intente y responda el resultado) –

+0

No use 'path =/notExistingPath' si desea que su cookie funcione en navegadores IE o Edge – amanteaux

0

utilizar una ruta imposible fijar la cookie:

document.cookie = "cookieName=...; expires=... ; path=/never_reached/ablkappmqlnahsuia"; 
Cuestiones relacionadas