Firefox 删除持久性 Cookie

Posted

技术标签:

【中文标题】Firefox 删除持久性 Cookie【英文标题】:Firefox deletes persistent Cookies 【发布时间】:2020-02-21 09:13:39 【问题描述】:

我一直在尝试让基于html/js 的语言选择系统工作,我需要一个持久性cookie,它可以在一定时间内保存用户所做的语言选择。

遗憾的是,这个 cookie 被 Firefox 误认为是一个活动跟踪 cookie(它有点像),因此在会话结束时被删除。

我能以某种方式防止这种情况发生吗?

如果这个脚本可以工作,我完成的代码也应该可以工作:

if(document.cookie.indexOf("test=") < 0)
            document.cookie = "test=Hello World; max-age=3600";
        
else
            window.location.replace("https://www.youtube.com/");
        

应该怎么做:

    第一次打开网站时,会设置一个 cookie,然后什么都不会发生。 用户第二次被重定向到 youtube.com。

它的作用:

    第一次打开网站时,会设置一个 cookie,然后什么都不会发生。 如果站点随后被刷新或在另一个选项卡中打开,用户将被重定向到 youtube.com。但是,如果浏览器或标签页关闭,cookie 将会丢失,我们将返回第 1 步。

【问题讨论】:

【参考方案1】:

我不确定,我不是 javascript 专家。但我注意到大多数文档建议检查 cookie 是否存在都建议这样做:document.cookie.indexOf("test=") 所以也许 cookie 没有被删除,但是您使用错误的方法检查 cookie 是否存在。

if(document.cookie.indexOf("test=") < 0)
        document.cookie = "test=Hello World; max-age=3600";

else
        window.location.replace("https://www.youtube.com/");

【讨论】:

感谢 Arjan,我尝试了 .indexOf 方法,但结果保持不变。我已经编辑了原始帖子并添加了更多信息。 我在linux上,刚刚用firefox测试过。在这里它可以正常工作。所以我无法重现你的问题。

以上是关于Firefox 删除持久性 Cookie的主要内容,如果未能解决你的问题,请参考以下文章

关于cookie(会话cookie与持久cookie)

经典 ASP 中的持久 Cookie

保存并打开Firefox和Chrome中的标签页

cookie的弊端

cookie和session那些事

会话 Cookie 与持久性 Cookie