javascript设置cookie与过期时间

时间:2012-10-31 09:14:23

标签: javascript cookies

我正在通过Javascript设置一个cookie,它工作正常,但它没有采取我给予的过期时间。无论我给出什么,它都会继续获取会话值,下面是我从here

获取的代码
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 dev工具中的会话

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

知道我做错了吗?

8 个答案:

答案 0 :(得分:37)

我认为没关系。我把时间设定为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

答案 1 :(得分:19)

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

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

答案 2 :(得分:13)

  1. 使用max-age

    • 一天创建Cookie的语法

      string configFile =  string.Concat(appName, ".config");  
      // Map the new configuration file.
      ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap 
      { 
          ExeConfigFilename = configFile 
      };
      
      var config = ConfigurationManager.OpenMappedExeConfiguration(
              configFileMap, 
              ConfigurationUserLevel.PerUserRoamingAndLocal);
      

      它会在24小时(1天)= 24 * 60 * 60 = 86400

    • 创建一个cookie
    • 删除Cookie的语法

      document.cookie = "cookieName=cookieValue; max-age=86400; path=/;";
      
  2. 使用过期

    • 创建一天Cookie的语法

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

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

答案 3 :(得分:6)

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

将设置一年的值。

答案 4 :(得分: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=/";
}

来源:http://www.w3schools.com/js/js_cookies.asp

答案 5 :(得分:2)

我想第二个Polin的答案,只是添加一件事,以防你仍然卡住。此代码确实可以设置特定的Cookie到期时间。您可能遇到的一个问题是,如果您使用Chrome并通过“http://localhost ...”或“file://”访问您的网页,则Chrome不会存储Cookie。对此的简单解决方法是使用简单的http服务器(如节点的http服务器,如果还没有),并明确导航到您的页面“http://127.0.0.1”,在这种情况下,Chrome将存储用于本地开发的cookie。这让我有点不知所措,如果你不这样做,当你在控制台或开发工具中调查时,你的expires键只会有“session”的值。

答案 6 :(得分:1)

我使用功能存储具有自定义到期时间(以天为单位)的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=/";
}

答案 7 :(得分:0)

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