这是一个设置cookie的函数:
public void addCookie(String cookieName, String cookieValue, Integer maxAge, HttpServletResponse response) {
Cookie cookie = new Cookie(cookieName, cookieValue);
cookie.setPath("/mycampaigns");
cookie.setSecure(isSecureCookie);
cookie.setMaxAge(maxAge);
response.addCookie(cookie);
}
我相信在Servlet 3.0中,有一种方法可以直接执行此操作。不幸的是,我的组织此时使用2.5,而升级不是一个选择。
有没有办法使用响应来设置cookie?这是我在网上找到的一个例子
response.setHeader("SET-COOKIE", "[SOME STUFF]" +"; HttpOnly")
如果这是做我想要的唯一方法,那么我将用“[SOME STUFF]”代替什么,以便不丢失函数当前存储在cookie中的任何数据?
最佳答案
没错,手动设置标题是实现目标的正确方法。
您还可以使用javax.ws.rs.core.NewCookie或任何其他具有有用的toString方法的类将Cookie打印到 header 中,以使事情变得更简单。
public static String getHttpOnlyCookieHeader(Cookie cookie) {
NewCookie newCookie = new NewCookie(cookie.getName(), cookie.getValue(),
cookie.getPath(), cookie.getDomain(), cookie.getVersion(),
cookie.getComment(), cookie.getMaxAge(), cookie.getSecure());
return newCookie + "; HttpOnly";
}
以及用法:
response.setHeader("SET-COOKIE", getHttpOnlyCookieHeader(myOriginalCookie));