88

我正在通过 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=/';

知道我做错了什么吗?

4

8 回答 8

78

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

到期

于 2012-10-31T11:22:23.543 回答
42

下面是创建和删除 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=/;"
    
于 2017-04-19T13:07:56.893 回答
26

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

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;
};
于 2012-10-31T18:17:31.523 回答
16
document.cookie = "cookie_name=cookie_value; max-age=31536000; path=/";

将设置一年的值。

于 2017-06-08T10:04:29.510 回答
4

像这样使用(来源):

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=/";
}
于 2012-10-31T09:23:21.307 回答
3

我想第二波林的回答,并添加一件事,以防你仍然被卡住。这段代码确实可以设置特定的 cookie 过期时间。您可能遇到的一个问题是,如果您使用 Chrome 并通过“ http://localhost ...”或“file://”访问您的页面,Chrome 将不会存储 cookie。解决这个问题的简单方法是使用一个简单的 http 服务器(如果您还没有使用节点的 http-server)并以“ http://127.0.0.1 ”显式导航到您的页面,在这种情况下,Chrome 将存储本地的 cookie发展。这让我有点挂断了,如果你不这样做,当你在控制台或开发工具中调查它时,你的过期密钥将只是具有“会话”的值。

于 2016-03-16T14:59:43.637 回答
3

我使用一个函数来存储具有自定义过期时间(以天为单位)的 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=/";
}
于 2020-04-21T09:33:18.773 回答
1

您的浏览器可能配置为仅接受会话 cookie;如果是这种情况,浏览器会将任何到期时间转换为会话,您可以更改浏览器的此设置或尝试其他没有此类配置的浏览器

于 2019-12-24T07:54:45.847 回答