【问题标题】:jQuery cookie expiration valuejQuery cookie 过期值
【发布时间】:2011-03-25 22:19:12
【问题描述】:

我在这里阅读了很多关于 jQuery cookie 的问题并且知道有一个 jQuery cookie 插件 (jQuery cookie)。没有做太多调查,问题是:有没有办法确定cookie的到期日期?

来自 jquery.cookie 文档:

/**
* Get the value of a cookie with the given name.
*
* @example $.cookie('the_cookie');
* @desc Get the value of a cookie.
*
* @param String name The name of the cookie.
* @return The value of the cookie.
* @type String
*
* @name $.cookie
* @cat Plugins/Cookie
* @author Klaus Hartl/klaus.hartl@stilbuero.de
*/

这个插件好像不行?

我想这样做的原因是我的 cookie 在 5 分钟不活动后过期,我想通知用户他们的会话即将从 Javascript 过期。

【问题讨论】:

    标签: jquery cookies


    【解决方案1】:

    由于无法从 JavaScript API 访问,唯一的方法是将其与元数据并行存储在内容中。

      var textContent = "xxxx"
      var expireDays = 10;
      var now = new Date().getTime();
      var expireDate = now + (1000*60*60*24*expireDays);
      $.cookie("myCookie", '{"data": "'+ textContent +'", "expires": '+ expireDate +'}', { expires: expireDays  });
    

    然后将其读回(显然,添加安全措施以防 cookie 已经过期):

    var now = new Date().getTime();
    var cookie = $.parseJSON($.cookie("myCookie"));
    var timeleft = cookie.expires - now;
    var cookieData = cookie.data;
    

    请注意,如果客户端时钟同时发生变化,例如由于 DST,这将不完全可靠。

    【讨论】:

    • var cookie = $.parseJSON($.cookie("myCookie"));不起作用。 @link stackoverflow.com/questions/1532193/…
    • @user470370:如果您确实包含 Jquery 和 the Cookie plugin 并使用正确的 json(我犯了一个错误,忘记了 json 字符串键周围的引号),它就可以正常工作。 jsfiddle.net/3ddLG/2
    • 请考虑在服务器端获取以这种方式存储的值时会遇到问题。例如,在 PHP 中,$_COOKIE['myCookie'] 只会获取其值的第一个字符。
    【解决方案2】:
    $.cookie("example", "foo", { expires: 7 });
    

    将在 7 天后到期

    没有 Javascript API 可让您检查 cookie 的到期日期

    【讨论】:

    • 我想要过期值。我不是在问如何设置过期值本身。
    • 没有 Javascript API 可让您检查 cookie 的到期日期
    【解决方案3】:

    除非发生了变化,否则您无法 cookie 获取此值,您可以设置它,但仅此而已,当它过期时,它将不再显示在 cookie 集合中。 ...但您看不到它会在 5 分钟后过期。

    对于会话到期的某些事情,最好的选择是使用 setTimeout() 并具有正确的延迟,例如,如果是 5 分钟,您可能希望在 4 分 30 秒时发出警报,如下所示:

    setTimeout(function() {
      alert("Your session will expire in 30 seconds!");
    }, 270000);  //4.5 * 60 * 1000
    

    【讨论】:

    • 感谢您的回答,谢谢。由于我在每个后续页面请求中通过 PHP 更新 cookie,因此您建议我只在每个页面请求上设置 cookie.expiration 的超时时间 - (一段时间)向用户发送消息?我想我只是不明白为什么您可以设置过期但无法取回。
    • @Chris - 我不确定那个原因,只要知道文档/cookie API 没有获取它的方法,如果您查看document.cookie,您会看到它不在其中:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 2012-03-06
    • 2019-03-07
    • 1970-01-01
    • 2021-12-19
    • 2012-12-27
    相关资源
    最近更新 更多