我需要在一个响应中创建几个持久性 Cookie。
像
一样response.addCookie(new Cookie("1","1"));
response.addCookie(new Cookie("2","2"));
将使用2个“Set-Cookie”标头创建响应。但他们不会坚持不懈。 我需要“过期”日期。
expires=Wed, 07-Nov-2012 14:52:08 GMT
看看javax.servlet.http.Cookie如何不支持“expires”,我以前用过
String cookieString="cookieName=content;Path=/;expires=Wed, 07-Nov-2012 14:52:08 GMT;"
response.setHeader("Set-Cookie", cookieString);
哪个像魅力一样,但第二次使用response.setHeader(“Set-Cookie”,newCookie)会覆盖第一个。
所以,问题是,是否有任何方法可以在响应中添加几个相同的命名标题? 或者,如果还有其他正确的方法吗?
我见过使用逗号分隔Cookie的建议,但我的经验是浏览器只能读取第一个Cookie。
答案 0 :(得分:9)
您需要addHeader()
而不是setHeader()
。前者添加标题,而后者设置(因此覆盖任何旧标题)标题。
response.addHeader("Set-Cookie", cookieString1);
response.addHeader("Set-Cookie", cookieString2);
然而,正确的方法是使用Cookie
类的setMaxAge()
方法(以秒为单位的过期时间)并以通常的方式使用addCookie()
。
Cookie cookie1 = new Cookie("1","1");
cookie1.setMaxAge(1209600);
response.addCookie(cookie1);
Cookie cookie2 = new Cookie("2","2");
cookie2.setMaxAge(1209600);
response.addCookie(cookie2);