diff options
author | ianb <devnull@localhost> | 2009-02-11 21:58:59 +0000 |
---|---|---|
committer | ianb <devnull@localhost> | 2009-02-11 21:58:59 +0000 |
commit | 25048871645be821766d7e792aa921350e2a04a0 (patch) | |
tree | ca0a906697f078c68b27155a130000ec69245165 | |
parent | 3249d239a170cfeaa6a93b622f0855f4ecf62281 (diff) | |
download | pastedeploy-25048871645be821766d7e792aa921350e2a04a0.tar.gz |
Handle cases where X-Forwarded-Host has multiple values
-rw-r--r-- | docs/news.txt | 3 | ||||
-rw-r--r-- | paste/deploy/config.py | 4 |
2 files changed, 5 insertions, 2 deletions
diff --git a/docs/news.txt b/docs/news.txt index a72ed76..22f1277 100644 --- a/docs/news.txt +++ b/docs/news.txt @@ -9,6 +9,9 @@ svn trunk to the key ``environ['wsgi.url_scheme']``. Also ``X-Forwarded-For`` is translated to ``environ['REMOTE_ADDR']`` +* Also in PrefixMiddleware, if X-Forwarded-Host has multiple + (comma-separated) values, use only the first value. + 1.3.2 ----- diff --git a/paste/deploy/config.py b/paste/deploy/config.py index ddf0ed6..d690ff3 100644 --- a/paste/deploy/config.py +++ b/paste/deploy/config.py @@ -259,9 +259,9 @@ class PrefixMiddleware(object): environ['SCRIPT_NAME'] = self.prefix if self.translate_forwarded_server: if 'HTTP_X_FORWARDED_SERVER' in environ: - environ['SERVER_NAME'] = environ['HTTP_HOST'] = environ.pop('HTTP_X_FORWARDED_SERVER') + environ['SERVER_NAME'] = environ['HTTP_HOST'] = environ.pop('HTTP_X_FORWARDED_SERVER').split(',')[0] if 'HTTP_X_FORWARDED_HOST' in environ: - environ['HTTP_HOST'] = environ.pop('HTTP_X_FORWARDED_HOST') + environ['HTTP_HOST'] = environ.pop('HTTP_X_FORWARDED_HOST').split(',')[0] if 'HTTP_X_FORWARDED_FOR' in environ: environ['REMOTE_ADDR'] = environ.pop('HTTP_X_FORWARDED_FOR') if 'HTTP_X_FORWARDED_SCHEME' in environ: |