Stuart Maclean wrote:
>
> At 10:59 AM 11/3/99 -0700, you wrote:
> >Does anyone know how to actually delete a cookie as setMaxAge(0) doesn't
> >seem to do anything at all in the code below.
> >
> >public void service(HttpServletRequest request, HttpServletResponse
> >response) throws ServletException, IOException {
> >        Cookie[] cookies = request.getCookies();
> >
> >        PrintWriter out = response.getWriter();
> >
> >        response.setContentType("text/html");
> >
> >        out.println("<html><head><title>ClearCookies</title></head><body>");
> >        out.println("<h2>ClearCookies</h2><hr>");
> >
> >        if (cookies != null) {
> >          for (int i = 0; i < cookies.length; i++) {
> >            out.println("Deleting: " + cookies[i].getName() + "<br>");
> >            cookies[i].setMaxAge(0);
> >          }
> >
> >          out.println("<p>");
> >          out.println("<b>Your cookies have been deleted</b>");
> >        } else {
> >          out.println("<b>No cookies to delete</b>");
> >        }
> >
> >        out.println("<hr></body></html>");
> >
> >        out.close();
> >    }
> >
> >Marc Tremblay
> >Web Programmer
> >EyeWire Inc.
> >
> If I recall don't you have to set all response header info before writing
> any message body to the stream?  The coed above writes message body THEN
> sets a response.  The Hunter Servlet bok suggets that your setting of 0 as
> the max age is correct for your (intended) purpose.

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.

--
Hans Bergsten           [EMAIL PROTECTED]
Gefion Software         http://www.gefionsoftware.com

___________________________________________________________________________
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