summaryrefslogtreecommitdiffstats
path: root/Lib/http
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2014-12-26 16:53:43 (GMT)
committerBenjamin Peterson <benjamin@python.org>2014-12-26 16:53:43 (GMT)
commit94cb7a24298ee0a4d6a3bb6b8ae80a7729e9f788 (patch)
tree763dc2b108050e4b7a29db10851260b14e39994b /Lib/http
parent8c4e112afcf6b2236c43273d007de5b61d4b6519 (diff)
downloadcpython-94cb7a24298ee0a4d6a3bb6b8ae80a7729e9f788.zip
cpython-94cb7a24298ee0a4d6a3bb6b8ae80a7729e9f788.tar.gz
cpython-94cb7a24298ee0a4d6a3bb6b8ae80a7729e9f788.tar.bz2
fix behavior of trailing slash redirection when a query string is involved (closes #23112)
Diffstat (limited to 'Lib/http')
-rw-r--r--Lib/http/server.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/Lib/http/server.py b/Lib/http/server.py
index f916fdd..cfa29f4 100644
--- a/Lib/http/server.py
+++ b/Lib/http/server.py
@@ -701,10 +701,14 @@ class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
path = self.translate_path(self.path)
f = None
if os.path.isdir(path):
- if not self.path.endswith('/'):
+ parts = urllib.parse.urlsplit(self.path)
+ if not parts.path.endswith('/'):
# redirect browser - doing basically what apache does
self.send_response(301)
- self.send_header("Location", self.path + "/")
+ new_parts = (parts[0], parts[1], parts[2] + '/',
+ parts[3], parts[4])
+ new_url = urllib.parse.urlunsplit(new_parts)
+ self.send_header("Location", new_url)
self.end_headers()
return None
for index in "index.html", "index.htm":