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.

Jose vega
fuente
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.

Paolo Bergantino
fuente
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).

Jamie
fuente
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 :)

Nimir
fuente
89
¿Estás seguro de que es un viernes?
David
8
google.com/… *
Adam Nelson
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 });
Yuseferi
fuente
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

Liam Martens
fuente
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.

Benjamin Easterling
fuente
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

rhavendc
fuente
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.

jfhfhf839
fuente
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";
Jak
fuente
1
Caducará después de un año, no durará indefinidamente (AFAIK).
Solomon Ucko