【问题标题】:Cookie expiration is related with Session expiration time of server?Cookie 过期时间与服务器的 Session 过期时间有关吗?
【发布时间】:2013-01-16 13:57:16
【问题描述】:

我使用下面的代码设置 Cookie,

document.cookie = name+"="+value+ ";expires="+"domain=xyz.com;path=/";

我的服务器中设置的会话过期时间是 15 分钟。如果客户端空闲 15 分钟, 15分钟后,会话将被销毁。这会破坏我的 Cookie 中设置的值吗?

我的意思是,document.cookie 中设置的 cookie 过期时间与服务器中设置的 cookie 过期时间有关吗?

【问题讨论】:

    标签: session cookies session-cookies


    【解决方案1】:

    我认为答案真的取决于浏览器如何处理 cookie 过期

    当服务器发送 HTTP 响应时,客户端(浏览器)将在响应中查找任何 Set-Cookie 标头。如果找到,它将覆盖存储在浏览器上的 cookie。

    引用Persistent Client State HTTP Cookies:

    expires 标头让客户端知道何时可以安全地清除映射但客户端不需要这样做。如果 cookie 的数量超过其内部限制,客户端也可以在 cookie 的到期日期到来之前删除它。

    另外,检查一下:

    如果 CGI 脚本希望删除 cookie,它可以通过返回具有相同名称的 cookie 和过去的过期时间来实现。路径和名称必须完全匹配,以便过期 cookie 替换有效 cookie。这一要求使得除了 cookie 的创建者之外的任何人都很难删除 cookie。

    这意味着如果网络服务器自动向您发送带有Set-Cookie 标头的响应,它将覆盖您手动设置的cookie。

    相关:
    http://www.superuser.com/questions/356265/what-do-browsers-do-with-expired-cookies
    http://www.*.com/questions/1635909/how-do-i-remove-delete-expire-a-cookie-immediately

    【讨论】:

    • 在 IE8、FF16、Chrome24 中检查。在服务器中的会话时间到期时,Cookie 数据不会到期。可以在较低版本中发生吗?
    【解决方案2】:

    如果cookie被销毁,那么数据也将被销毁。

    【讨论】: