【问题标题】:Cookie max age in JavaJava中的Cookie最大年龄
【发布时间】:2014-07-01 01:05:35
【问题描述】:

这有什么区别:

cookie.setMaxAge(0);

还有这个

cookie.setMaxAge(-1);

是否首先将其删除?

【问题讨论】:

标签: java cookies


【解决方案1】:

假设我们在谈论javax.servlet.http.Cookie

Javadoc 是这么说的

setMaxAge public void setMaxAge(int expiry)

设置此 Cookie 的最大期限(以秒为单位)。

正值 表示 cookie 将在几秒后过期 通过了。请注意,该值是 cookie 的最大年龄 过期,而不是 cookie 的当前年龄。

负值表示 cookie 没有永久存储,并且 将在 Web 浏览器退出时被删除。

零值会导致 cookie 被删除。

【讨论】:

    【解决方案2】:

    负值表示 cookie 没有永久存储,并且 Web 浏览器退出时将被删除。零值导致 cookie 被删除。

    http://docs.oracle.com/javaee/6/api/javax/servlet/http/Cookie.html#setMaxAge%28int%29

    【讨论】:

      【解决方案3】:

      来自RFC 6265

      如果 delta-seconds 小于或等于零 (0),则让 expiry-time 是最早的可表示日期和时间。否则,让 expiry-time 是当前日期和时间加上 delta-seconds 秒。

      因此,两者都让 cookie 在兼容的用户代理上尽快过期

      但是,实际上,负值意味着会话 cookie。

      【讨论】:

        【解决方案4】:

        cookie.setMaxAge( 0 ) 将立即删除 cookie。

        cookie.setMaxAge( -1 ) 会保留cookie一段时间,并在浏览器退出时删除cookie。

        相关信息请参考API Documentation

        【讨论】:

          猜你喜欢
          • 2015-09-10
          • 2018-10-29
          • 1970-01-01
          • 2014-08-23
          • 1970-01-01
          • 2011-09-23
          • 1970-01-01
          • 1970-01-01
          • 2016-03-30
          相关资源
          最近更新 更多