Skip to content

Commit 88833c1

Browse files
committed
Make @removeslash a no-op when applied to a request for '/'.
This prevents a redirect loop as browsers interpret an empty redirect as a redirect to /.
1 parent 73d3c82 commit 88833c1

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

tornado/web.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -954,10 +954,12 @@ def wrapper(self, *args, **kwargs):
954954
if self.request.path.endswith("/"):
955955
if self.request.method in ("GET", "HEAD"):
956956
uri = self.request.path.rstrip("/")
957-
if self.request.query: uri += "?" + self.request.query
958-
self.redirect(uri)
959-
return
960-
raise HTTPError(404)
957+
if uri: # don't try to redirect '/' to ''
958+
if self.request.query: uri += "?" + self.request.query
959+
self.redirect(uri)
960+
return
961+
else:
962+
raise HTTPError(404)
961963
return method(self, *args, **kwargs)
962964
return wrapper
963965

0 commit comments

Comments
 (0)