web-dev-qa-db-fra.com

Cookie Javascript sans date d'expiration

J'aimerais créer un cookie qui n'expire jamais. Serait-ce même possible?

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

Je ne veux pas que la date soit vraiment grande, je me demande simplement s'il existe une valeur pour le paramètre expires dans le cookie qui indique qu'il n'expire jamais. 

Merci.

106
Jose Vega

Nan. Ne peut pas être fait. La «façon» de le faire consiste simplement à faire en sorte que la date d'expiration soit proche de 2030.

133
Paolo Bergantino

Il n'y a pas de syntaxe pour ce que vous voulez. Si le paramètre n'est pas expiré, le cookie expirera à la fin de la session. La seule option est de choisir une valeur arbitrairement élevée. Sachez que certains navigateurs ont des problèmes avec les dates antérieures à 2038 (lorsque le temps Epoch dépasse un int de 32 bits).

94
Jamie

Vous pouvez faire comme l'exemple sur Mozilla docs :

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

P.S 

Bien sûr, il y aura un problème si l'humanité utilise toujours votre code la première minute de l'an 10000 :)

46
Nimir

Tous les cookies expirent conformément au cookie spécification , la valeur maximale que vous pouvez définir est 

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

Donc, la durée de vie maximale des cookies est 

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

Vous pouvez éventuellement définir un cookie à une date d'expiration d'un mois ou autre, puis réaffecter le cookie chaque fois que l'utilisateur visite le site à nouveau.

8
Liam Martens

Si vous ne définissez pas de date d'expiration, le cookie expirera à la fin de la session de l'utilisateur. Je recommande d’utiliser la date juste avant l’époque unix qui étendra passé un entier de 32 bits. Pour mettre cela dans le cookie, vous utiliseriez document.cookie = "randomCookie=true; expires=Tue, 19 Jan 2038 03:14:07 UTC;, en supposant que randomCookie est le cookie que vous définissez et true sa valeur respective.

8

VOUS NE POUVEZ PAS. Il n'y a pas de code exact à utiliser pour définir un cookie permanent, mais une vieille astuce suffira, comme current time + 10 years

Notez simplement que toute date au-delà de January 2038 vous condamnera car les cookies (32-bit int) seront immédiatement supprimés. Souhaite un miracle que cela soit réglé dans un proche avenir. Pour 64-bit int, les années autour de 2110 seront sans danger. Au fil du temps, les logiciels et le matériel vont changer et risquent de ne jamais s'adapter aux versions les plus anciennes (ce que nous avons maintenant). Préparez donc le maintenant pour le futur.

Voir Problème de l'année 2038

1
rhavendc

Si vous souhaitez lire les données uniquement à partir du côté client, vous pouvez utiliser le stockage local . Il n'est supprimé que lorsque le cache du navigateur est effacé.

1
jfhfhf839

Vous pouvez créer un cookie sans fin en le fixant à la date de votre choix, plus un de plus que l'année en cours, comme ceci: 

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