Java 其他servlet中的Cookie集不会在对同一应用程序的不同servlet的请求中设置
我在JBoss8服务器上部署了一个ear应用程序。前端部分是一个JSF应用程序。在frontend.war中,我定义了两个servlet:Java 其他servlet中的Cookie集不会在对同一应用程序的不同servlet的请求中设置,java,jsf,servlets,cookies,servlet-filters,Java,Jsf,Servlets,Cookies,Servlet Filters,我在JBoss8服务器上部署了一个ear应用程序。前端部分是一个JSF应用程序。在frontend.war中,我定义了两个servlet: JSF2.2Servlet用于我的GUI,在127.0.0.1:8080/app上本地运行 MockAuthenticationServlet,在127.0.0.1:8080/app/auth上本地运行 MockAuthenticationServlet只设置一个cookie(测试cookie),如下所示: protected void doGet(Http
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Cookie cookie = new Cookie(COOKIE_NAME, "12345");
cookie.setPath("/");
resp.addCookie(cookie);
resp.sendRedirect("/app");
}
以下是从doFiter调用的ServletFilter中的方法:
private Cookie getCookie(HttpServletRequest request) {
if (request.getCookies() != null) {
for (Cookie c : request.getCookies()) {
if (c.getName().equals(COOKIE_NAME)) {
return c;
}
}
}
return (Cookie) request.getAttribute(COOKIE_NAME);
}
上一次返回仅适用于作为属性发送的情况。cookie应该从循环中返回
我已经调试了MockAuthenticationServlet并设置了Cookie,我在打开浏览器cookies列表时也看到了它。但是,在我的ServletFilter中,我想检查是否设置了此cookie,请求中的cookie列表为null。我错过什么了吗?谢谢您的提示。发布servlet过滤器的代码,您是在设置cookie之后还是在itI添加获取cookie的过滤器方法之前进行检查。过滤器检查每个进入/javax.faces.resource的请求。如果未设置cookie,则计划重定向到MockAuthenticationServlet。从MockAuthenticationServlet设置后,应将其重定向回。我还要说,我在浏览器中看到了cookie,但在调试java代码时它是空的。域与127.0.0.1相同,只是上下文路径已更改。请使用浏览器插件确定cookie是否实际发送到服务器。如果是,请在问题中提供完整的HTTP头集。