javascript-cookie met vervaltijd

Ik plaats een cookie met Javascript en het werkt prima, maar het duurt niet de vervaltijd die ik geef. Het blijft sessiewaarde aannemen, ongeacht wat ik geef, hieronder staat de code die ik heb overgenomen van hier

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=/';

Ik heb geprobeerd een hard-coded waarde te geven, maar het wordt nog steeds weergegeven als sessie in de chrome dev-tool

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

Enig idee wat ik verkeerd doe?


Antwoord 1, autoriteit 100%

Ik heb de tijd ingesteld op 1000*36000.

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


Antwoord 2, autoriteit 45%

Hieronder staan codefragmenten om een cookie te maken en te verwijderen. De cookie wordt voor 1 dag geplaatst.

// 1 Day = 24 Hrs = 24*60*60 = 86400.
  1. Door max-leeftijd te gebruiken:

    • De cookie maken:
    document.cookie = "cookieName=cookieValue; max-age=86400; path=/;";
    
    • De cookie verwijderen:
    document.cookie = "cookieName=; max-age=- (any digit); path=/;";
    
  2. Door verlopen te gebruiken:

    • Syntaxis voor het maken van de cookie voor één dag:
    var expires = (new Date(Date.now()+ 86400*1000)).toUTCString();
    document.cookie = "cookieName=cookieValue; expires=" + expires + 86400) + ";path=/;"
    

Antwoord 3, autoriteit 33%

Hier is een functie waarvoor ik een andere toepassing heb geschreven. Voel je vrij om opnieuw te gebruiken:

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;
};

Antwoord 4, autoriteit 18%

document.cookie = "cookie_name=cookie_value; max-age=31536000; path=/";

Zal de waarde voor een jaar instellen.


Antwoord 5, autoriteit 5%

Gebruik als volgt (bron):

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=/";
}

Antwoord 6, autoriteit 4%

Ik sluit me aan bij het antwoord van Polin en voeg één ding toe voor het geval je nog steeds vastzit. Deze code werkt zeker om een specifieke vervaltijd voor cookies in te stellen. Een probleem dat u mogelijk ondervindt, is dat als u Chrome gebruikt en uw pagina opent via “http://localhost…” of “file://”, Chrome zal geen cookies opslaan. De eenvoudige oplossing hiervoor is om een eenvoudige http-server te gebruiken (zoals de http-server van node als je dat nog niet hebt gedaan) en expliciet naar je pagina te navigeren als “http://127.0.0.1” in welk geval Chrome cookies ZAL opslaan voor lokale ontwikkeling. Hierdoor heb ik even opgehangen, want als je dit niet doet, zal je verlopen sleutel gewoon de waarde “session” hebben wanneer je deze in de console of in Dev Tools onderzoekt.


Antwoord 7

Ik gebruik een functie om cookies op te slaan met een aangepaste vervaltijd in dagen:

// 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=/";
}

Antwoord 8

Uw browser kan zo zijn geconfigureerd dat alleen sessiecookies worden geaccepteerd; als dit uw geval is, wordt elke vervaltijd door uw browser omgezet in een sessie, u kunt deze instelling van uw browser wijzigen of een andere browser proberen zonder een dergelijke configuratie

Other episodes