summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorianb <ianb@localhost>2009-02-11 21:58:59 +0000
committerianb <ianb@localhost>2009-02-11 21:58:59 +0000
commit96255f171fdf80dea85f4846094a64c132d56e60 (patch)
treeca0a906697f078c68b27155a130000ec69245165
parent5df8cc72eda603f93d67ef3d19f94e0db1111dba (diff)
downloadpastedeploy-git-96255f171fdf80dea85f4846094a64c132d56e60.tar.gz
Handle cases where X-Forwarded-Host has multiple values
-rw-r--r--docs/news.txt3
-rw-r--r--paste/deploy/config.py4
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: