cookie.setMaxAge奇怪的行为

时间:2012-10-18 15:12:17

标签: java jsp java-ee servlets cookies

我在一个基于jsp的网站上工作,该网站需要启用cookie才能导航(它是一个内部网站,不会暴露给互联网)。

用户的第一次访问会将302返回到请求的同一个网址,并将Cookie设置为一小时。

我正在使用Cookie.setMaxAge(60*60);来设置到期日期。

我对某些浏览器的某些版本有一种非常奇怪的行为,它们会永远重定向。 (有些工作,有些不起作用)。

经过大量调查后,我们发现服务器中的时间未设置为正确的时间,并且其时间设置为过去两个半小时,因为cookie可能“已过期“已设定。 (这是我的疑问)

不幸的是,这是一个生产服务器,我无法轻易改变它(它被请求但需要一些时间)。

为了确认这是问题所在,我将客户端计算机的时间更改为过去的两个半小时,并且在该计算机上开始正常工作。

我的问题是:

  1. 向浏览器发送什么信息(关于cookie到期) 日期),它是绝对日期或相对于当前日期 时间?。
  2. 浏览器是否会在过期时发送Cookie 到期日期或浏览器只是不发送它们 过期? (我认为是第二种选择)。
  3. 因为我在使用某些浏览器时遇到了麻烦并且与其他浏览器一起工作,所以不确切地知道这些 问题,在appserver或浏览器中?
  4. [编辑]

    按照Arham的建议阅读RFC 6265后,服务器可以将失效日期设置为绝对日期或相对日期。如果两者都是presenr,则相对优先。 我正在使用的appserver是用绝对值设置cookie(这可能是错误的),所以我不明白它是如何在某些浏览器上运行的。

    [/ EDIT]

    提前致谢。

2 个答案:

答案 0 :(得分:2)

  1. 根据RFC 1123,日期以“Wdy,DD Mon YYYY HH:MM:SS GMT”的形式指定。
  2. 根据RFC 6265,Cookie的到期时间与浏览器收到Cookie的时间有关。
  3. 浏览器会在cookie过期后删除它,因此无法将相同的cookie发送到服务器。

答案 1 :(得分:1)

javascript cookies怎么样?

http://www.w3schools.com/js/js_cookies.asp