Description
The req.proxyreq and req.uri attributes are not currently modifiable. If they were modifable, it would be possible for a mod_python handler to trigger proxying of a request to some remote site. For example:
import posixpath
from mod_python import apache
def fixuphandler(req):
if req.proxyreq:
return apache.DECLINED
normalised_uri = posixpath.normpath(req.uri)
if normalised_uri:
if normalised_uri != '/' and req.uri[-1] == '/':
normalised_uri += '/'
length = len(req.filename)
length -= len(req.hlist.directory) - 1
length += len(req.path_info or '')
baseurl = normalised_uri[:-length]
path = normalised_uri[len(baseurl):]
req.proxyreq = apache.PROXYREQ_REVERSE
req.uri = 'http://www.dscpl.com.au' + path
req.filename = 'proxy:%s' % req.uri
req.handler = 'proxy-server'
return apache.OK
See further discussion on mailing list:
http://www.modpython.org/pipermail/mod_python/2006-March/020500.html
http://www.modpython.org/pipermail/mod_python/2006-March/020502.html
http://www.modpython.org/pipermail/mod_python/2006-March/020503.html
http://www.modpython.org/pipermail/mod_python/2006-March/020507.html
Patches are include in the last of these emails rather than being attached here.