|
Gregory (Grisha) Trubetskoy
grisha at modpython.org
Thu Aug 14 10:17:14 EST 2003
This is a feature of Apache. When it sees an error response (all 204 (no
content), 3xx (redirect), 4xx (client error) and 5xx (server error)),
which includes HTTP_MOVED_TEMPORARILY (even though it's not an error
technically), it sends out only req.err_headers_out. It does make a
special provision for the Location header and copy it into err_headers_out
if it's not already there, which is why it makes it through.
You can send both headers by either:
req.err_headers_out.add('Set-Cookie', morsel.OutputString())
req.err_headers_out.add('Location:', location)
return apache.HTTP_MOVED_TEMPORARILY
or
req.headers_out.add('Set-Cookie', morsel.OutputString())
req.status = apache.HTTP_MOVED_TEMPORARILY
return apache.OK
Grisha
On Thu, 14 Aug 2003, David Fraser wrote:
> Hi
>
> I came across the following problem and wondered if there was a workaround.
> Basically I want to set a cookie in a certain directory, and at the same
> time issue a Redirect to another place.
> So I wanted to do:
> req.headers_out.add('Set-Cookie', morsel.OutputString())
> req.headers_out.add('Location:', location)
> return apache.HTTP_MOVED_TEMPORARILY
>
> However, I found that as soon as I return the HTTP_MOVED_TEMPORARILY,
> the Set-Cookie string seems to be removed from the headers going to the
> client (this was tested by using the livehttpheaders extension to Firebird).
> I couldn't work out where in the code that was happening but suspect
> that it is standard Apache behaviour.
> Is this because I'm not supposed to be allowed to do this, or is it odd?
>
> (I have a workaround of having a page with a meta http-equiv="refresh",
> but wondered if there is a way to get it working as would like...)
>
> Thanks
> David
>
>
> _______________________________________________
> Mod_python mailing list
> Mod_python at modpython.org
> http://mailman.modpython.org/mailman/listinfo/mod_python
>
|