gpt4 book ai didi

java - 在同一个响应中设置多个 cookie

转载 作者:行者123 更新时间:2023-12-01 19:23:07 39 4
gpt4 key购买 nike

我需要在一个响应中创建多个持久 cookie。

这样做

response.addCookie(new Cookie("1","1"));
response.addCookie(new Cookie("2","2"));

将创建一个带有 2 个“Set-Cookie” header 的响应。但他们不会坚持下去。我需要“过期”日期。

expires=Wed, 07-Nov-2012 14:52:08 GMT

看看javax.servlet.http.Cookie如何不支持“过期”,我以前用过

String cookieString="cookieName=content;Path=/;expires=Wed, 07-Nov-2012 14:52:08 GMT;"
response.setHeader("Set-Cookie", cookieString);

这就像一个魅力,但第二次使用 response.setHeader("Set-Cookie",newCookie) 会覆盖第一次。

那么,问题是是否有办法向响应添加几个相同的命名 header ?或者是否还有其他正确的方法可以做到这一点?

我看到过使用逗号分隔 cookie 的建议,但我的经验是浏览器只会读取第一个 cookie。

最佳答案

您需要addHeader()而不是setHeader() 。前者添加 header ,而后者设置(从而覆盖任何旧 header ) header 。

response.addHeader("Set-Cookie", cookieString1);
response.addHeader("Set-Cookie", cookieString2);

然而,正确的方法是使用 setMaxAge() Cookie 类的方法(以秒为单位的过期时间)并使用 addCookie()通常的方式。

public static final int TWO_WEEKS_IN_SECONDS = (int) TimeUnit.DAYS.toSeconds(14);

// ...

Cookie cookie1 = new Cookie("1","1");
cookie1.setMaxAge(TWO_WEEKS_IN_SECONDS);
response.addCookie(cookie1);

Cookie cookie2 = new Cookie("2","2");
cookie2.setMaxAge(TWO_WEEKS_IN_SECONDS);
response.addCookie(cookie2);

关于java - 在同一个响应中设置多个 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13052565/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com