90 votes

Comment puis-je définir un cookie avec une date d'expiration ?

J'installe un cookie avec JavaScript et cela fonctionne bien mais il ne prend pas le temps d'expiration que je donne. Il continue à prendre la valeur de la session indépendamment de ce que je donne, ci-dessous est le code que j'ai pris de ici

var now = new Date();
var time = now.getTime();
var expireTime = time + 1000*60;
now.setTime(expireTime);
var tempExp = 'Wed, 31 Oct 2012 08:50:17 GMT';
document.cookie = aaa+'='+sStr+';expires='+now.toGMTString()+';path=/';

J'ai essayé de donner une valeur codée en dur, mais l'outil de développement de chrome affiche toujours l'expiration de la session.

var tempExp = 'Wed, 31 Oct 2012 08:50:17 GMT';
document.cookie = aaa+'='+sStr+';expires='+tempExp+';path=/';

Une idée de ce que je fais mal ?

3voto

pmccaffrey6 Points 31

J'aimerais appuyer la réponse de Polin et ajouter une chose au cas où vous seriez toujours bloqué. Ce code fonctionne certainement pour définir un délai d'expiration spécifique pour les cookies. Un problème que vous pouvez rencontrer est que si vous utilisez Chrome et accédez à votre page via " http://localhost ..." ou "file://", Chrome ne stockera pas les cookies. La solution la plus simple est d'utiliser un simple serveur http (comme le serveur http de node si ce n'est pas déjà fait) et de naviguer vers votre page explicitement comme " http://127.0.0.1 "Dans ce cas, Chrome stockera des cookies pour le développement local. J'ai eu un peu de mal à comprendre car, si vous ne faites pas cela, votre clé expirée aura simplement la valeur "session" lorsque vous l'examinerez dans la console ou dans Dev Tools.

3voto

gabriele m Points 89

J'utilise une fonction pour stocker les cookies avec un délai d'expiration personnalisé en jours :

// use it like: writeCookie("mycookie", "1", 30)
// this will set a cookie for 30 days since now
function writeCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

1voto

Lucio Zambon Points 11

Votre navigateur peut être configuré pour n'accepter que les cookies de session ; si c'est votre cas, toute durée d'expiration est transformée en session par votre navigateur, vous pouvez modifier ce paramètre de votre navigateur ou essayer un autre navigateur sans cette configuration.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X