【发布时间】:2015-04-09 16:53:51
【问题描述】:
我有以下代码作为自定义过滤器的一部分运行:
Cookie cookie = new Cookie("NAME", "VALUE");
cookie.setMaxAge(Integer.MAX_VALUE);
response.addCookie(cookie);
使用 Jetty 服务器运行 UT 时,我从 servlet 成功接收到 cookie。 然而,当我运行本地 Tomcat 服务器(使用 IntelliJ)时,甚至没有在服务器端设置 cookie(即不是客户端问题)。我能看到的唯一 cookie 是 jsessionid cookie。
我尝试了以下方法,但没有成功:
- setDomain("")
- setPath("/")
- response.flushBuffer() 添加 cookie 后。
我在添加新 cookie 后立即打印所有响应 cookie,但我的 cookie 未列出。
Collection<String> headers = ((HttpServletResponse) res).getHeaders("Set-Cookie");
for (String header : headers) {
System.out.println("Session Cookie:" + header);
}
总的来说,我对 Web 应用程序和 Java 还很陌生,所以我也可能错过了一些非常基本的东西。 在这里将不胜感激。
【问题讨论】:
-
您的过滤器是否已正确注册? (在 web.xml 中,如果 servlets 2.X 或在 servlets 3.X 中这样注释)
-
是的。过滤器按预期执行。添加新 cookie 后,我打印所有 cookie,但未列出我刚刚添加的 cookie。
标签: java servlets cookies tomcat8