在页面打开时获取Cookie不会过期,但在关闭时最后1小时

时间:2010-02-16 14:36:57

标签: cookies

我有一个页面显示从cookie中读取的数据。 Cookie会在一小时后过期。用户经常会导航到页面并保持打开状态。当他们稍后再回来时,cookie已经过期,页面上的数据不再相关。

有人可以建议我如何将Cookie的到期时间设置为持续会话的长度吗?

作为参考,这是我用来设置cookie的代码(我从我们拥有的另一个项目中解除了这个代码,而这个代码可能已经从这个网站上解除了!: - )

function setCookie(value)
{
    var today = new Date();
    today.setTime(today.getTime());
    var expires = 30 * 1000 * 60;

    var c_name = 'CompareFundIds';
    var exdate = new Date(today.getTime() + (expires));
    document.cookie = c_name + "=" + value + ";expires=" + exdate.toGMTString();
}

4 个答案:

答案 0 :(得分:2)

您的标题和文字似乎说明了两个不同的要求:

  1. cookie必须保持有效,直到浏览器关闭,然后消失
  2. cookie必须保持有效,直到浏览器关闭,然后再保持有效一小时,然后消失
  3. 如果你没有为cookie设置“expires”值,那么

    1)将起作用:

    // Set cookie until browser is closed
    document.cookie = c_name + "=" + value;
    

    2)如果你让setCookie函数重复运行,只要页面打开就行了,比如每分钟:

    // Set cookie every minute
    var value = ...;
    window.setInterval(function () {
        setCookie(value);
    }, 60 * 1000);
    

    当浏览器关闭时,cookie将永远不会超过1分钟,因此将在另一个小时内有效。

答案 1 :(得分:1)

  

有人可以建议我如何将Cookie的到期时间设置为持续会话的长度吗?

据我所知,这是不可能的。

您可以做的是更改服务器逻辑。镜像会话和cookie中的值。首先从会话中读取,如果不存在,则返回cookie。这应该可以解决问题。

答案 2 :(得分:0)

也许您可以使用Ajax调用PHP文件来保持服务器端的会话活动吗?

答案 3 :(得分:0)

这是不是可以使用onUnload / onClose javascript事件吗?理想情况下,您可以在页面加载时设置一些行为,然后在页面卸载时设置另一个行为。当然,所有浏览器都不支持onClose,但我发现jQuery确实支持onunload方法。

参考文献: