【问题标题】:Firefox deleting specific cookie at end of sessionFirefox 在会话结束时删除特定 cookie
【发布时间】:2015-04-22 12:14:01
【问题描述】:

我正在使用以下代码创建一个 cookie:

var cnm="exampleCookie";
var exdays=365*4;
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : ";
expires="+exdate.toUTCString());
document.cookie=cnm + "=" + c_value;

但是,Firefox (v 35.0.1) 不会将 cookie 保存到过期日期,而是在会话结束时删除 cookie。这在 Chrome 中不会发生,并且 Firefox 不会删除同一站点上的其他 cookie。我还在 github 托管的页面上使用了相同的 JS 代码,它会在浏览器关闭后保留 cookie。设置后检查 cookie(使用Cookies Manager+ addon)表明它设置了过期日期。

我怎样才能让 Firefox 停止删除这个 cookie?

【问题讨论】:

    标签: javascript firefox cookies


    【解决方案1】:

    为了让最新的浏览器遵守 cookie 过期日期,您需要设置 Max-Age 指令。 Expires 适用于旧浏览器,如 IE6、7 和 8 以及 FF 3 和 chrome 早期版本。从 HTTP 1.1 开始,Max-Age 在任何符合标准的浏览器中都有效,并且所有最新版本都完全符合。如果有疑问,或者如果您需要同时支持旧浏览器,请同时设置它们,但请注意这些值。 Expires 接受一个日期字符串,其中 Max-Age 需要像 Max-Age=31536000 这样的秒数,这意味着它将在浏览器收到 cookie 的那一刻起 1 年后过期

    【讨论】:

    • 已将其更改为var c_value=escape("1")+"; max-age=999999999; expires="+exdate.toUTCString();,但浏览器关闭时cookie仍会被删除。
    • 您能否在将最终cookie字符串添加到您的文档之前添加console.log?
    • testCookie=1; max-age=999999999; expires=Wed, 15 Nov 2017 19:32:17 GMT
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    • 2011-11-30
    • 2013-04-24
    • 2014-06-21
    • 1970-01-01
    • 2020-06-03
    • 2015-06-29
    相关资源
    最近更新 更多