summaryrefslogtreecommitdiff
path: root/webob/response.py
diff options
context:
space:
mode:
Diffstat (limited to 'webob/response.py')
-rw-r--r--webob/response.py13
1 files changed, 8 insertions, 5 deletions
diff --git a/webob/response.py b/webob/response.py
index 83931f8..20b0e47 100644
--- a/webob/response.py
+++ b/webob/response.py
@@ -934,8 +934,10 @@ class Response(object):
if name.lower() == 'location':
if SCHEME_RE.search(value):
break
- new_location = urlparse.urljoin(
- _request_uri(environ), value)
+ uri = _request_uri(environ)
+ if not uri.endswith('/'):
+ uri += '/'
+ new_location = urlparse.urljoin(uri, value)
headerlist = list(headerlist)
idx = headerlist.index((name, value))
headerlist[idx] = (name, new_location)
@@ -1152,16 +1154,17 @@ def _request_uri(environ):
script_name = environ.get('SCRIPT_NAME') or '/'
path_info = environ.get('PATH_INFO','')
+
if PY3: # pragma: no cover
script_name = script_name.encode('latin-1').decode('utf-8')
path_info = path_info.encode('latin-1').decode('utf-8')
url += url_quote(script_name)
path_info = url_quote(path_info)
- if not environ.get('SCRIPT_NAME'):
- url += path_info[1:]
- else:
+ if environ.get('SCRIPT_NAME'):
url += path_info
+ else:
+ url += path_info[1:]
return url