我在一个基于 jsp 的网站工作,该网站需要启用 cookie 才能导航它(它是一个内部站点,它不会暴露在互联网上)。
用户第一次访问将返回 302 到请求的相同 url,并设置一个小时的 cookie。
我Cookie.setMaxAge(60*60);
用来设置到期日期。
对于某些浏览器的某些版本,我的行为非常奇怪,它们会永远重定向。(有些工作,有些不工作)。
经过大量调查,我们发现服务器中的时间设置不正确,并且它的时间设置为过去两个半小时,导致cookie可能“过期”为它已设置。(这是我的疑问)
不幸的是,这是一个生产服务器,我无法轻松更改它(正在请求它,但需要一些时间)。
为了确认这是问题所在,我将客户端机器的时间更改为过去两个半小时,它开始在该机器上正常工作。
我的问题是:
- 什么信息被发送到浏览器(关于 cookie 到期
日期),它是绝对日期还是相对于当前时间? - 如果它们与到期日期一起过期,浏览器是否会发送 cookie,或者浏览器是否在过期时不发送它们?(我认为是第二种选择)。
- 因为我在使用某些浏览器时遇到了问题并且它与其他浏览器一起工作,所以不知道究竟是应用服务器还是浏览器中的问题?
[编辑]
在按照 Arham 的建议阅读 RFC 6265 后,服务器可以将到期日期设置为绝对或相对。如果两者都存在,则相对优先。我正在使用的应用服务器正在使用绝对值设置 cookie(这可能是错误的),所以我不明白它在某些浏览器上是如何工作的。
[/编辑]
提前致谢。