【问题标题】:How to set browser cookie that expires every hour如何设置每小时过期的浏览器cookie
【发布时间】:2015-03-07 15:08:11
【问题描述】:

我有一个带有 python 后端和 javascript/html 前端的网站,自然而然。我想每小时显示一个弹出窗口。用户在网站的哪个页面上并不重要;一旦弹出窗口出现,它应该等待一小时才能再次出现。我不知道如何创建 cookie 来做到这一点。目前,弹出窗口由前端管理,每次有人导航到网站上的不同页面时都会显示。我宁愿将管理完全保留在前端。但我也不介意在服务器上管理它。那么如何跟踪我已经向某个用户/浏览器实例显示了弹出窗口,然后再等一个小时再显示呢?

对我来说关键问题是 cookie 是针对整个网站的,而不仅仅是针对一个网页

【问题讨论】:

  • 您希望它实时响应吗?导致创建一个一小时后过期的 cookie 我猜这并不难?;)并且在未设置 cookie 时触发操作...
  • stackoverflow.com/questions/3794989/… 为您的问题提供了我猜的答案。他们在根目录上设置了一个 cookie,该 cookie 一小时后过期。
  • 真的要过期吗?我想我宁愿记住显示最后一个弹出窗口的时间并计算差异。加载页面时可以安排超时。如果用户有多个选项卡,仍然会有问题 - 弹出窗口可能会同时显示在所有选项卡中。也许这不是问题?
  • 或者您可以使用本地存储在选项卡之间进行通信:) stackoverflow.com/a/22001740/98057
  • 为了澄清:这个想法是无论用户在哪里登陆(实际上除了主页),我都会显示我的弹出窗口,然后等待一小时再显示它。我想我需要使用 cookie 来做到这一点。一旦设置了 cookie,我希望它可以从任何其他页面访问/读取;这样我就可以检查弹出窗口是否已经呈现,因此不应再次呈现。

标签: javascript python cookies


【解决方案1】:

您可以在 cookie 中使用 expires

    # Pseudocode
    var d = new Date(); 
    d.setTime(d.getTime() + 60*60*1000); // in milliseconds
    document.cookie = 'foo=bar;path=/;expires='+d.toGMTString()+';';

您也可以在 cookie 中使用 max-age

# Pseudocode    
document.cookie = 'foo=bar;path=/;max-age='+60*60+';';

注意: Internet Explorer 不支持 max-age,因此如果您想要适当的跨浏览器持久性 cookie,请坚持使用expires

【讨论】:

  • 所以你是说只要我设置了cookie,它就会应用到我的整个网站而不仅仅是一个特定的网页?这样我就可以从我网站的任何页面中检查“全局”cookie?
  • 你可以扩展你网站每个页面的响应头来为每个页面设置cookie。当你返回一个页面的响应时覆盖该页面的响应头并添加上述逻辑
  • 现在你失去了我。所以这个想法是,无论用户在哪里登陆(实际上除了主页),我都会显示我的弹出窗口,然后等待一小时再显示它。我想我需要使用 cookie 来做到这一点。设置 cookie 后,我希望它可以从任何其他页面访问/读取。
  • 如果您在返回页面响应时设置cookie,它将可用于所有其他页面。
猜你喜欢
  • 2021-12-20
  • 1970-01-01
  • 2014-05-07
  • 2016-07-07
  • 1970-01-01
  • 2015-07-30
  • 2014-08-10
  • 2020-06-06
  • 2022-11-15
相关资源
最近更新 更多