Jim Gallacher
jpg at jgassociates.ca
Sat Nov 26 11:47:55 EST 2005
Nic Ferrier wrote: > I've got a python handler that does this: > > # something.py > > def handler(http): > http.status = apache.UNAUTHORIZED > return apache.OK > > > And in the apache config I've got something like: > > <Location /something> > SetHandler python-program > PythonHandler something > </Location> > > ErrorDocument 401 /somepage.html > > > But the error document is not being served for requests to my > handler. I think it should because I'm returning 401. > > Can someone enlighten me? Does the request processing just not work > like that? You would think that just setting the status would suffice but this does not seem to be the way it works. Without actually checking I imagine that the client will still see the req.status you set, plus whatever content your handler dishes out, but you have not told apache that you want to interupt processing have sling some different content. You do this by raising an exception. from mod_python import apache def handler(req): if unknown_user(req): raise apache.SERVER_RETURN, apache.HTTP_UNAUTHORIZED if user_is_naughty(req): raise apache.SERVER_RETURN, apache.HTTP_FORBIDDEN if user_is_asking_for_something_silly(req): raise apache.SERVER_RETURN, apache.HTTP_NOT_FOUND req.write("It's all good") return apache.OK Jim
|