diff options
author | Benjamin Peterson <benjamin@python.org> | 2014-12-26 16:53:43 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2014-12-26 16:53:43 (GMT) |
commit | 94cb7a24298ee0a4d6a3bb6b8ae80a7729e9f788 (patch) | |
tree | 763dc2b108050e4b7a29db10851260b14e39994b /Lib/http | |
parent | 8c4e112afcf6b2236c43273d007de5b61d4b6519 (diff) | |
download | cpython-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.py | 8 |
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": |