【发布时间】:2018-09-04 17:58:25
【问题描述】:
我设置了一个session cookie,它没有任何到期日期,因此会在关闭浏览器时被删除。
现在我想添加一个最长有效期,这意味着
- 如果浏览器在最大过期日期之前关闭,我的 cookie 将被删除
- 否则我的 cookie 将在最长过期日期后被删除
请注意,我不想设置“常规”到期日期,因为这会使我的 cookie persistent 在到期日期之前关闭浏览器时无法删除。
我找到的唯一解决方案是拥有第二个持久性 cookie,具有最长到期日期:如果找不到第二个 cookie(过期),我手动删除我的第一个 cookie。由于我想在 cookie 中写入尽可能少的信息,如果有其他方式,我更愿意。
@CBroe 发表评论后,我补充说 cookie 是在客户端生成的,并且我没有关联的服务器端会话来存储上次访问时间戳
2018 年更新
在这个问题上开始赏金之后,我得到了几个答案。谢谢你。作为反馈,这可能更好地阐明我的问题的目的,请注意 我不是在寻找代码来设置持久性 cookie 或实施我已经拥有的解决方案(设置第二个持久性曲奇饼)。我希望有其他一些创造性的建议。目前,我可以使用 Zeeshan 的提示并在值中设置时间戳(我会将其附加到实际值中)。因此,该答案是迄今为止获得赏金的最佳人选。
【问题讨论】:
-
你到底想通过这个实现什么? (我假设您不仅设置了客户端意义上的“会话 cookie”,而且还有与之关联的服务器端会话?在这种情况下,您应该将上次访问时间戳存储到会话中,然后下一个请求检查时差是否太大。)
-
@CBroe 我做网络分析。我没有服务器端会话。我确实有一个客户端意义上的会话 cookie,我正在根据该 cookie 按访问对浏览量进行分组,并希望有一个最长的访问持续时间
-
那是你在处理数据时应该处理的事情。 // 特别是出于分析目的,您可能希望能够再次将我识别为同一用户,即使我关闭了浏览器,然后在几秒钟后再次打开您的网站——使用会话 cookie,这将是有问题的。因此,存储一个有效期更长的 cookie,并实现必要的逻辑,在后端按特定时间范围将页面视图“分组”在一起。
-
@CBroe 我已经有一个持久的访问者 cookie。如果您关闭浏览器并稍后再次打开该网站,我想计算 1 次访问者和 2 次访问。但随后很难中断长时间访问(有人数小时或数天不关闭浏览器)
-
“但是很难打破长时间的访问(有人不会关闭他们的浏览器数小时或数天)” – 再次,我会看看之间的间隔连续的要求。 // 你确定自己实现这个是有意义的吗?即使像谷歌分析公司这样的“大玩家”。出于隐私原因或其他原因,这些都是不可能的,仍然有诸如 Piwik 之类的开源解决方案,您可以在自己的系统上进行设置和运行。并且已经对这些工具如何最好地工作进行了很多思考 - 因此重新发明轮子可能不是这里最明智的选择。
标签: cookies