Cookie Javascript sin fecha de vencimiento


143

Me gustaría configurar una cookie que nunca caduque. ¿Sería eso posible?

 document.cookie = "name=value; expires=date; path=path;domain=domain; secure";

No quiero hacer que la fecha sea realmente grande, solo me pregunto si hubo un valor para el parámetro caduca en la cookie que le dijo que nunca caduque.

Gracias.


1
¿Por qué no quieres agrandar la fecha?
AnthonyWJones

13
hacer que la fecha sea grande me hace sentir como si estuviera haciendo trampa. Si ese es el único camino a seguir, supongo que tendré que ampliar la fecha.
Jose Vega

Respuestas:


170

No No se puede hacer La 'forma' de hacerlo es simplemente hacer que la fecha de vencimiento sea como 2030.


31
Solo quedan cuatro años más. Espero que hayas actualizado la cookie.
antony.ouseph.k

160
2020 - el año del apocalipsis de las galletas
JeffreyPia

14
Maldición, se acerca cada año, espero que tu código se haya actualizado.
kartsims

22
Está editado para 2030 ahora, estamos posponiendo nuestra perdición 10 años más
Simeon Nakov

77
Así que, básicamente, el 19 Ene 2038, Chewie se sentará en el Millennium Falcon y se quejan de la emergente política de cookies en el mapa galáctico API una vez más ...
nickhar

108

No hay sintaxis para lo que quieres. No establecer caduca hace que la cookie caduque al final de la sesión. La única opción es elegir un valor arbitrariamente grande. Tenga en cuenta que algunos navegadores tienen problemas con fechas posteriores a 2038 (cuando el tiempo de época de Unix excede un int de 32 bits).


25
2038-01-19, 03:14:08 UTC, para ser precisos.
Wilhelm Klopp

Solo para aclarar: ¿es una regla que funciona de la misma manera en todos los navegadores? lo que significa que si no configuro la fecha de caducidad, la cookie durará solo hasta el final de la sesión.
Silver Ringvee

2
Una cookie creada sin una directiva Expireso Max-Agees una cookie de sesión: se elimina cuando el cliente se apaga. Sin embargo, los navegadores web pueden usar la restauración de sesión , lo que hace que la mayoría de las cookies de sesión sean permanentes, como si el navegador nunca se cerrara. ( fuente: MDN )
mfluehr

67

Puede hacer como el ejemplo en documentos de Mozilla :

 document.cookie = "someCookieName=true; expires=Fri, 31 Dec 9999 23:59:59 GMT";

PD

Por supuesto, habrá un problema si la humanidad todavía usa su código en el primer minuto del año 10000 :)


89
¿Estás seguro de que es un viernes?
David


55
No funcionó para mí usando npmjs.com/package/universal-cookie . Fui con la solución del año 2038 . Escribí un boleto para regresar en 2030 para ver si hay una solución.
Hinrich

15

Todas las cookies caducan según la especificación de cookies , el valor máximo que puede establecer es

 2^31 - 1 = 2147483647 = 2038-01-19 04:14:07

Entonces, la vida útil máxima de la cookie es

$.cookie('subscripted_24', true, { expires: 2147483647 });

77
Ese número no funcionó para mí. Después de un poco de prueba y error, el número más alto que pude usar fue 99983090 (caduca = viernes, 12 de septiembre de 275760 18:10:24 GMT). Cualquier cosa más alta devuelto "Fecha no válida"
JeffreyPia

Si pasa un número como parámetro de caducidad a jquery-cookie o js-cookie, se tardarán como días en caducar a partir de ahora. Si desea una fecha fija, debe pasar un objeto Date en su lugar.
Dario Seidl

El código anterior utiliza el complemento jquery-cookie que se ha retirado a favor de js-cookie .
Jens

2
para vanilla JS:document.cookie = 'subscripted_24=true; expires=' + new Date(2147483647 * 1000).toUTCString();
Oksana Romaniv

12

Es posible que pueda configurar una cookie en una fecha de vencimiento de un mes o algo así y luego reasignar la cookie cada vez que el usuario visite el sitio web nuevamente


1
Esta es la respuesta correcta para configurar cookies interminables. Y si necesita tener en cuenta que el usuario nunca cierra el sitio, puede implementar una condición adicional para actualizar las cookies por cualquier acción o después de un cierto tiempo.
Alex Shink

9

Si no establece una fecha de vencimiento, la cookie caducará al final de la sesión del usuario. Recomiendo usar la fecha justo antes de que el tiempo de época de Unix se extienda pasado un entero de 32 bits. Para poner eso en la cookie que usaría document.cookie = "randomCookie=true; expires=Tue, 19 Jan 2038 03:14:07 UTC;, asumiendo que esa randomCookiees la cookie que está configurando y truees su valor respectivo.


2

Usted simplemente no puede . No hay un código exacto para configurar una cookie para siempre, pero un viejo truco servirá, comocurrent time + 10 years .

Solo una nota de que cualquier fecha posterior January 2038lo condenará a las cookies ( 32 bits int ) se eliminará al instante. Desea un milagro que se arregle en el futuro cercano. Para 64 bits int , los años 2110serán seguros. A medida que pase el tiempo, el software y el hardware cambiarán y es posible que nunca se adapten a los más antiguos (las cosas que tenemos ahora), así que prepare el ahora para el futuro .

Ver problema del año 2038


3
Creo que no te das cuenta de cuán lejos en el futuro puede contar una computadora de 64 bits , es decir, 292 mil millones de años
Gust van de Wal

@GustvandeWal ¿Entonces sí? Ya lo leí. Incluso incluí ese enlace en mi respuesta.
rhavendc

1
De su respuesta: para 64 bits int , los años alrededor de 2110 estarán a salvo. Esto parece sospechosamente parecido a lo que se espera que las computadoras de 64 bits cuenten el doble que las computadoras de 32 bits (1970 -> 2035 -> 2110)
Gust van de Wal

@GustvandeWal Lo siento si mis palabras suenan sospechosas. Tal vez no sea la mejor manera de decirlo en inglés. Pero bueno, no esperaba ni pensaba ese tipo de idea que acabas de decir.
rhavendc

44
Una pequeña nota: si estaríamos usando procesadores de 33 bits, entonces el año 2110 tendría sentido.
hegez

1

Si tiene la intención de leer los datos solo desde el lado del cliente, puede usar el almacenamiento local. Se elimina solo cuando se borra la memoria caché del navegador.


O el navegador está cerrado o la computadora está apagada
Redwolf Programs

@RedwolfPrograms ¿Desde cuándo se borra el almacenamiento local cuando se cierra el navegador o se apaga la computadora?
Igor Jerosimić

@ IgorJerosimić ¡Vaya! Supongo que pensé que debido a un error en un sitio mío ...
Programas Redwolf

-2

Puede hacer que una cookie nunca termine configurándola en cualquier fecha más una más que el año actual de esta manera:

var d = new Date();    
document.cookie = "username=John Doe; expires=Thu, 18 Dec " + (d.getFullYear() + 1) + " 12:00:00 UTC";

1
Caducará después de un año, no durará indefinidamente (AFAIK).
Solomon Ucko
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.