java - 使用 javax.servlet 2.5 设置 httponly cookie

标签 java cookies cookie-httponly servlet-2.5

这是一个设置 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));

关于java - 使用 javax.servlet 2.5 设置 httponly cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13147113/

相关文章:

javascript - Scala:Play Framework 2 忽略 application.conf 中的 httpOnly 标志

java - 在 Java 1.5 项目中使用 Jmockit 时出现 UnsupportedClassVersionError

java - 将标签绑定(bind)到场景的底部中心 - JavaFX

java - 如何为Struts doubleselect标签中的两个文本框赋予不同的标签?

java - 处理自定义 View 解析器抛出的异常

javascript - 与其他域共享 cookie

Perl WWW::Mechanize 将 cookie 存储为字符串

javascript - 使用 Javascript 基于 Cookie 的重定向

node.js - HttpOnly cookie 可以在 Node 客户端中访问吗?

web-services - 使用 HttpOnly cookie 注销