我已经在这里阅读了很多jQuery cookie问题,并且知道有一个jQuery cookie插件(jQuery cookie)。没有做太多调查,问题是:有没有办法确定cookie的到期日期?
来自jquery.cookie doc:
/**
* 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过期。
答案 0 :(得分:6)
$.cookie("example", "foo", { expires: 7 });
将在7天后过期
没有允许您检查Cookie的到期日期的Javascript API
答案 1 :(得分:3)
除非有些内容发生了变化,否则你无法从中获取此值,你可以设置它,但就是它,当它到期时它就不会再出现在cookie集合中了。 ...但你不能看到它在5分钟后过期。
对于会话过期的最佳选择是使用setTimeout()
并使用正确的延迟,例如,如果是5分钟,您可能需要在4分30秒时发出警报,如下所示:
setTimeout(function() {
alert("Your session will expire in 30 seconds!");
}, 270000); //4.5 * 60 * 1000
答案 2 :(得分:3)
由于无法从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),这将不完全可靠。