【发布时间】:2013-01-12 00:43:00
【问题描述】:
我有一个带有 doFilter 方法的过滤器类。在doFilter方法中,我设置了一个cookie如下
HttpServletResponse httpResp=(HttpServletResponse)servletResponse;
Cookie myCookie=new Cookie("test","");
myCookie.setValue("testValue");
myCookie.setPath("/");
myCookie.setDomain(".mydomain.com");
httpResp.addCookie(myCookie);
filterChain.doFilter(servletRequest,servletResponse);
这在理想情况下应该可行吗?在 httpResp(HttpServletResponse) 对象中设置一个 cookie,然后只转发 servletResponse(ServletResponse) 对象
奇怪的是,cookie 是为某些客户端设置的,但对于其他一些客户端,cookie 没有设置。我已经检查了客户端浏览器上的 cookie 设置,看起来没问题。
【问题讨论】:
-
代码看起来不错。问题是在其他地方引起的。例如。链中的
response.reset()将清除所有标题(因此也清除之前设置的所有cookie)。运行调试器来确定原因。至少,如果手头没有 SSCCE,就无法可靠地回答这个问题。 -
没有其他过滤器。该链结束于一个 servlet,它简单地将相同的请求和响应转发给 JSP。所以它是这样的。 doFilter->Servlet->转发到JSP。标题丢失的任何可能性??
-
好吧,如前所述,到目前为止发布的代码中看不到问题。是其他地方造成的。例如。响应重置、URL 中的域错误、cookie 值不兼容、方案更改、代理不良等……等等……有太多可能的原因,如果没有 SSCCE,就无法回答。
标签: java cookies servlet-filters