Javascript 饼干会持续到过期吗?

Javascript 饼干会持续到过期吗?,javascript,cookies,Javascript,Cookies,我有下面的代码,应该将用户的会话限制为30分钟。出于某种原因,我们看到少量持续时间超过30分钟的会话。有时它们会持续几天。此外,这并不局限于一个浏览器,因为我们看到使用Chrome、IE、Firefox和移动浏览器的用户都有这个问题 var domain = tld.getDomain(location.hostname); var sessionTime = new Date(new Date().getTime() + 1800000); cookie.set("session", JSON

我有下面的代码,应该将用户的会话限制为30分钟。出于某种原因,我们看到少量持续时间超过30分钟的会话。有时它们会持续几天。此外,这并不局限于一个浏览器,因为我们看到使用Chrome、IE、Firefox和移动浏览器的用户都有这个问题

var domain = tld.getDomain(location.hostname);
var sessionTime = new Date(new Date().getTime() + 1800000);
cookie.set("session", JSON.stringify(sessionData), {
    expires: sessionTime,
    path: "/",
    domain: domain
});
会话是否可能在到期后继续?在页面加载时,我从会话cookie中提取UID并更新过期时间。如果cookie中没有UID,我将创建一个新cookie

Chrome控制台中cookie过期时间的屏幕截图。

我正在使用这个cookie库。

我使用这个库来确定顶级域

一个原因可能仅仅是客户端的时间不在(虽然如果是几天,那一定是一些奇怪的用户)。即使用户时钟偏移了,大概每分钟也会增加60秒。您需要tld.getDomain吗?只有document.domain或location.hostname有什么问题吗?此外,显示代码的其余部分或小提琴将有助于征求答案。@dandavis此代码在具有奇怪的顶级域(如com.br)的国际网站上运行。因此,对于ex,sub.domain.site.com.br应该将cookies保存到site.com.br,但是如果没有一个库知道所有tld,我就无法知道“com”是子域还是顶级域的一部分。我将创建一个示例fiddle。您不需要知道“com”是什么部分,如果您的方法生成document.domain以外的内容,cookie可能无法可靠地工作,并且可能会以不可预测的方式从不同的子站点进行更改。