我认为这是一个简单的问题,但我似乎找不到答案。

我正在使用Cookie类在Java Servlet中编写一个cookie,该类将在响应 header 中发送给浏览器,如下所示:

Set-Cookie: test=somevalue; Domain=.mydomain.org; Expires=Thu, 06-Jan-2011 18:45:20 GMT; Path=/

我是通过Servlet 2.5 API中的Cookie类来完成此操作的。我需要在该字符串的末尾添加“HTTPOnly”,而Servlet 2.5 API不支持该字符串。没问题,我将手动创建String并将“HTTPOnly”附加到末尾...

但是,这样做的挑战是,首先要在其中设置“Expires” header ,我使用了.setMaxAge(3600),它创建了该String的“Expires”部分。但是,由于我无法使用Cookie类,因此需要创建“Expires”部分的值。

因此,基本上,如何将“3600”格式设置为“2011年1月6日星期四,格林尼治标准时间”?

注意:我可能可以使用DateFormat找出正确的模式,但是我希望有一种更好的方法。另一个想法:像以前一样使用Cookie类,然后以编程方式将Cookie转换为相应的 header 字符串,然后将“HTTPOnly”附加到末尾。但是我不知道采取任何方法来获取Cookie对象并将其转换为相应的String值。

因此,可以选择如何将Cookie对象以编程方式转换为相应的String值?

谢谢!

最佳答案

像这样的东西:

Date expdate = new Date ();
expdate.setTime (expdate.getTime() + (3600 * 1000));
String cookieExpire = "expires=" + expdate.toGMTString();
...

..并且由于不推荐使用toGMTString()
Date expdate= new Date();
expdate.setTime (expdate.getTime() + (3600 * 1000));
DateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", java.util.Locale.US);
df.setTimeZone(TimeZone.getTimeZone("GMT"));
String cookieExpire = "expires=" + df.format(expdate);

10-05 23:08
查看更多