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 += '/'
Patches are include in the last of these emails rather than being attached here.
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.htmlhttp://www.modpython.org/pipermail/mod_python/2006-March/020502.htmlhttp://www.modpython.org/pipermail/mod_python/2006-March/020503.htmlhttp://www.modpython.org/pipermail/mod_python/2006-March/020507.html
Patches are include in the last of these emails rather than being attached here.