通过JS设置的Cookie将在浏览器关闭时到期,但不会过期

时间:2016-03-20 22:16:27

标签: javascript session cookies

在Firefox和Safari中测试,我尝试了以下两行。每个人都设置了cookie,但是在我关闭(然后重新打开)浏览器之后,这两种方法都没有使cookie过期。 浏览器的Cookie信息说" test"设置为过期,"在会话结束时#34;但它不会发生。

有一些类似的帖子(例如,When does a cookie with expiration time 'At end of session' expire?),但没有任何帮助或关于通过JavaScript设置cookie,特别是像我一样。

New_Star

2 个答案:

答案 0 :(得分:0)

expires标签想要获得UTC-Datestring。你可以使用我写的一些简单函数:

setCookie = function(attrib, value, exp_days) {
  var dt = new Date();
  dt.setTime(dt.getTime() + (exp_days*86400000)); // Convert days to ms
  document.cookie = attrib + "=" + value + "; expires=" + dt.toUTCString(); // add attrib=value to the cookie and set an expiration date
}

getCookie = function(attrib){
  var split_cookie = document.cookie.split("; ");
  attrib+="=";
  for(var i=0; i<split_cookie.length; i++)
    if(~split_cookie[i].indexOf(attrib)) // if the attribute is somewhere in the cookie string
    // im using an ugly bitflip operator here, it could as well be an if(...!=-1)
      return split_cookie[i].substring(attrib.length + split_cookie[i].indexOf(attrib),split_cookie[i].length);
  return "";
}

removeCookie = function(attrib){
  setCookie(attrib, "", -1);
}

如果使用removeCookie()函数,则在删除当前页面时将删除attrib的值。

答案 1 :(得分:0)

我没有意识到当你在Mac上“关闭”浏览器时,仍然有一个浏览器进程保持活动状态。您必须明确退出浏览器。一旦我这样做,cookie就消失了。