tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Colin Evans" <>
Subject Re: RequestDispatcher breaks cookies, response headers
Date Sat, 04 Nov 2000 23:52:37 GMT

When a RequestDispatcher.include() is done, *no* return headers are set at
all, except for "Content-Type".  It doesn't matter where the headers are
set.  This includes return headers that the Tomcat container is supposed to
set automatically for all servlet requests, such as "Content-Length" and
"Servlet-Engine" headers and any HTTP session cookies.

RequestDispatcher.forward() seems to function correctly.  My guess is that
Tomcat is supposed to delete any return headers set during an include and
not touch headers set by the dispatching servlet, and instead it is deleting
all of the return headers set during the request, including headers that
should be returned as per the spec.

I hope this helps; let me know if you need more explanations.


Colin Evans
Bitmo, Inc. (
(415)920.7225 /

----- Original Message -----
From: "Craig R. McClanahan" <>
To: <>; <>
Sent: Saturday, November 04, 2000 2:56 PM
Subject: Re: RequestDispatcher breaks cookies, response headers

> Colin Evans wrote:
> > Hi, I believe I  have found a bad bug in the RequestDispatcher
> > implementation.  If I do a successful RequestDispatcher.include() from
> > servlet to another, it appears that no HTTP response headers are
> > except for "Content-Type".  Everything else seems to respond correctly.
> > "Location", "Content-Length", and "Servlet-Engine" headers as well as
> > headers set in the servlet are not returned, and neither are any session
> > user cookies returned.  This basically breaks all
> > model-view-controller-based sites that use cookies, and for me is a
> > bug.
> >
> > I've seen the problem on Tomcat 3.1 and 3.2b6.  I'm running NT4.0 with
> > JDK 1.2.2.  I would appreciate ideas on work-arounds or patches.
> >
> Colin,
> Are you saying that the *included* servlet is trying to set some
> headers/cookies, and they are not showing up?  If so, that is the way it
> supposed to work.  Servlet 2.2 Specification, section 8.3:
>     The include method of the RequestDispatcher interface may be called
>     at any time.  The target servlet has access to all aspects of the
>     object, but can only write information to the ServletOutputStream or
>     Writer of the response object as well as the ability to commit a
>     by either writing content past the end of the response buffer or
>     explicitly calling the flush method of the ServletResponse interface.
>     The included servlet cannot set headers or call any method that
>     the headers of the response.  Any attempt to do so should be ignored.
> If this is not the situation you are describing, could you please provide
a bit
> more information?
> > Thanks!
> >
> > Colin Evans
> >
> Craig McClanahan

View raw message