javascript设置带有过期时间的cookie

IT技术 javascript cookies
2021-01-16 16:34:21

我正在通过 Javascript 设置一个 cookie,它工作正常,但它没有占用我提供的过期时间。无论我给出什么,它都会继续获取会话值,下面是我从这里获取的代码

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

我尝试给出硬编码值,但它仍然在 chrome 开发工具中显示为会话过期

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

知道我做错了什么吗?

6个回答

我已将时间设置为 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'
}

到期

稍微解释一下会很好,代码实际上做了什么,“1000 * 360000”在这里是什么意思?
2021-04-04 16:34:21
在 localhost 中进行测试时,Firefox 拒绝了到期日期,因为 SameSite 未设置,因此默认为 none。设置 document.cookie = ${YOUR_COOKIE_OR_WHATEVER};${THE_EXPIRE_TIME_OR_WHATEVER};SameSite=laxseams 来解决问题。
2021-04-14 16:34:21

以下是用于创建和删除 cookie 的代码片段。cookie 设置为 1 天。

// 1 Day = 24 Hrs = 24*60*60 = 86400.
  1. 通过使用最大年龄:

    • 创建 cookie

    document.cookie = "cookieName=cookieValue; max-age=86400; path=/;";
    
    • 删除cookie

    document.cookie = "cookieName=; max-age=- (any digit); path=/;";
    
  2. 通过使用过期:

    • 用于创建一天 cookie 的语法

    var expires = (new Date(Date.now()+ 86400*1000)).toUTCString();
    document.cookie = "cookieName=cookieValue; expires=" + expires + 86400) + ";path=/;"
    
new Date(Date.now() + 86400) 是我一直在寻找的,但我不确定日期格式是否会被接受,谢谢。
2021-03-16 16:34:21
在 expires 用法示例中,我没有expires + 86400从第二行得到 。您已经将天数(以毫秒为单位)加到第 1 行,对吗?那个额外的目的是86400什么?
2021-03-17 16:34:21

这是我编写的另一个应用程序的函数。随意重用:

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;
};
有什么作用+ date + (days * 86400000)
2021-04-01 16:34:21
+在变量只返回对象的数值之前。在这种情况下,+date等价于d.valueOf(),它也恰好是 返回的值date.getTime()
2021-04-10 16:34:21
document.cookie = "cookie_name=cookie_value; max-age=31536000; path=/";

将设置一年的值。

像这样使用(来源):

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=/";
}
添加了源代码,以后请确保您将复制的代码归因于原始源代码。
2021-03-22 16:34:21