在一个登录的servlet中,设置cookie,过期时间为1个星期
然后到登出的servlet,设置cookie.sexMaxAge(0),然后重定向(转发也试过)回首页,我用的是firefox,在这过程开着firebug来抓包。在登出的servlet重定向之后,在响应信息里是有set-cookie里这项,设置了expire为1970年。然而重定向后,随便开同是这个网站的其他网页,在firebug里看到,仍然有把这条cookie发上来。
在firefox里查看cookie,发现其过期时间仍为一个星期之后。
我的登出servlet的代码
@WebServlet("/web/account/logout")
public class LogoutServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session=request.getSession();
String userName=request.getParameter("userName");
session.removeAttribute("userName");
Cookie cookie=new Cookie("userName",userName);
cookie.setMaxAge(0);
response.addCookie(cookie);
RequestDispatcher dispatcher=request.getRequestDispatcher("/index.jsp"); //这里重定向和转发都试过,都不行
dispatcher.forward(request,response);
//response.sendRedirect("/index.jsp");
}
}
按以下这种写法,也是不行,一样的情况
@WebServlet("/web/account/logout")
public class LogoutServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session=request.getSession();
String userName=request.getParameter("userName");
session.removeAttribute("userName");
Cookie[] cookies=request.getCookies();
for(Cookie cookie:cookies)
{
if(cookie.getName().equals("userName"))
{
cookie.setMaxAge(0);
response.addCookie(cookie);
break;
}
}
RequestDispatcher dispatcher=request.getRequestDispatcher("/index.jsp"); //这里重定向和转发都试过,都不行
dispatcher.forward(request,response);
//response.sendRedirect("/index.jsp");
}
}
请问怎么解决呢?为什么不能使cookie过期呢?