web-dev-qa-db-fra.com

javascript set cookie avec le délai d'expiration

Je crée un cookie avec Javascript et cela fonctionne bien, mais cela ne prend pas le temps d'expiration que je donne. Il continue à prendre la valeur de la session, peu importe ce que je donne. Ci-dessous, le code que j'ai pris 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 il montre quand même expire en tant que session dans chrome dev outil

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?

50
antnewbee

Je pense que c'est ok. J'ai mis le temps à 1000 * 36000.

function display() { 
  var now = new Date();
  var time = now.getTime();
  var expireTime = time + 1000*36000;
  now.setTime(expireTime);
  var tempExp = 'Wed, 31 Oct 2012 08:50:17 GMT';
  document.cookie = 'cookie=ok;expires='+now.toGMTString()+';path=/';
  //console.log(document.cookie);
}

expiration

40
polin

Voici une fonction pour laquelle j'ai écrit une autre application. N'hésitez pas à réutiliser:

function writeCookie (key, value, days) {
    var date = new Date();

    // Default at 365 days.
    days = days || 365;

    // Get unix milliseconds at current time plus number of days
    date.setTime(+ date + (days * 86400000)); //24 * 60 * 60 * 1000

    window.document.cookie = key + "=" + value + "; expires=" + date.toGMTString() + "; path=/";

    return value;
};
21
Johnny Leung

Vous trouverez ci-dessous des extraits de code permettant de créer et de supprimer un cookie. Le cookie est configuré pour 1 jour.

// 1 Day = 24 Hrs = 24*60*60 = 86400.
  1. En utilisant max-age:

    • Création du cookie:
    document.cookie = "cookieName=cookieValue; max-age=86400; path=/;";
    
    • Suppression du cookie:
    document.cookie = "cookieName=; max-age=- (any digit); path=/;";
    
  2. En utilisant expires:

    • Syntaxe pour créer le cookie pendant un jour:
    var expires = (new Date(Date.now()+ 86400*1000)).toUTCString();
    document.cookie = "cookieName=cookieValue; expires=" + expires + 86400) + ";path=/;"
    
14
user8640104
document.cookie = "cookie_name=cookie_value; max-age=31536000; path=/";

Définira la valeur pour un an.

6
Bhupsa

Utilisez comme ceci ( source ):

function setCookie(c_name,value,exdays)
{

var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie = c_name+"="+c_value+"; path=/";
}
4
Mark Zer

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 une heure d'expiration de cookie spécifique. Un problème que vous pouvez rencontrer est que si vous utilisez Chrome et accédez à votre page via " http: // localhost ..." ou "fichier: // ", Chrome ne conservera pas les cookies. Pour ce faire, utilisez un simple serveur http (comme le serveur http de node si vous ne l'avez pas encore fait) et accédez à votre page de manière explicite en tant que" http://127.0.0.1 "dans ce cas Chrome CONSERVERA des cookies pour le développement local. Cela m'a bloqué un peu, si vous ne le faites pas Pour ce faire, votre clé d'expiration aura simplement la valeur de "session" lorsque vous l'examinerez dans la console ou dans les outils de développement.

2
pmccaffrey6