javascript设置cookie与过期时间

ant*_*bee 53 javascript cookies

我正在通过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=/';
Run Code Online (Sandbox Code Playgroud)

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

var tempExp = 'Wed, 31 Oct 2012 08:50:17 GMT';
document.cookie = aaa+'='+sStr+';expires='+tempExp+';path=/';
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?

pol*_*lin 43

我觉得还可以.我把时间设定为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);
}
Run Code Online (Sandbox Code Playgroud)

呼气

  • 不推荐使用`toGMTString()`.([MDN](https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Date/toGMTString))而是使用`toUTCString()` (4认同)
  • 稍微解释一下就好了,代码实际上是做什么的,“1000*360000”在这里意味着什么? (3认同)

Joh*_*ung 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;
};
Run Code Online (Sandbox Code Playgroud)

  • 变量前的“ +”仅返回对象的数值。在这种情况下,“ + date”等效于“ d.valueOf()”,也恰好是“ date.getTime()”返回的值。 (3认同)

小智 15

  1. 通过使用max-age

  2. 通过使用到期

    • 创建一天cookie的语法:

    var expires =(new Date(Date.now()+ 86400*1000)).toUTCString();

    document.cookie ="cookieName = cookieValue; expires ="+ expires + 86400)+"; path = /;"

  • 在过期用法示例中,我没有从第二行获取“expires + 86400”。您已经将日期(以毫秒为单位)添加到第 1 行,对吗?额外的“86400”的用途是什么? (7认同)

小智 6

document.cookie = "cookie_name=cookie_value; max-age=31536000; path=/";
Run Code Online (Sandbox Code Playgroud)

将值设置为一年.


小智 5

我使用一个函数来存储具有自定义过期时间(以天为单位)的 cookie:

// 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=/";
}
Run Code Online (Sandbox Code Playgroud)