> The main problem here is that the code above only sets the max age in the
> cookie object on the server. But the cookie lives on the client, so the
> client must be told about it in order for the cookie to be
> deleted. The way
> you do that is by adding the modified cookie to the response, i.e.
>
>   cookies[i].setMaxAge(0);
>   response.addCookie(cookies[i]);
>
> It's also true that to guarantee that the response headers
> (including cookie
> headers) are sent to the client, you shouldn't write any part of the
> response body until you have set all headers. But most servlet containers
> buffer the response body up to some limit (something like 4K) so I don't
> think that's a problem here.

So theoretically then the following code should work?

public void service(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
        Cookie[] cookies = request.getCookies();

        PrintWriter out = response.getWriter();

        response.setContentType("text/html");

        if (cookies != null) {
          for (int i = 0; i < cookies.length; i++) {
            cookies[i].setMaxAge(0);
            response.addCookie(cookies[i]);
          }
        }

        out.println("<html><head><title>ClearCookies</title></head><body>");
        out.println("<h2>ClearCookies</h2><hr>");

        out.println("<b>Your cookies have been deleted</b>");

        out.println("<hr></body></html>");

        out.close();
    }

I say theoretically because it doesn't for either MSIE 5 or Netscape 4.7.
Am I to assume that this API is broken?

-- Marc

___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".

Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html

Reply via email to