]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
temporarily fixed double slash redirect issue 1373/head
authordaftshady <daftonshady@gmail.com>
Mon, 9 Mar 2015 04:06:33 +0000 (13:06 +0900)
committerdaftshady <daftonshady@gmail.com>
Mon, 9 Mar 2015 04:06:33 +0000 (13:06 +0900)
tornado/test/web_test.py
tornado/web.py

index f3c8505ad000dedc745a86f5bbf819587b15ed9c..a52f16678c514c9ec2215a2d8ad2146f2c6853ad 100644 (file)
@@ -597,6 +597,7 @@ class WSGISafeWebTest(WebTestCase):
             url("/redirect", RedirectHandler),
             url("/web_redirect_permanent", WebRedirectHandler, {"url": "/web_redirect_newpath"}),
             url("/web_redirect", WebRedirectHandler, {"url": "/web_redirect_newpath", "permanent": False}),
+            url("//web_redirect_double_slash", WebRedirectHandler, {"url": '/web_redirect_newpath'}),
             url("/header_injection", HeaderInjectionHandler),
             url("/get_argument", GetArgumentHandler),
             url("/get_arguments", GetArgumentsHandler),
@@ -730,6 +731,11 @@ js_embed()
         self.assertEqual(response.code, 302)
         self.assertEqual(response.headers['Location'], '/web_redirect_newpath')
 
+    def test_web_redirect_double_slash(self):
+        response = self.fetch("//web_redirect_double_slash", follow_redirects=False)
+        self.assertEqual(response.code, 301)
+        self.assertEqual(response.headers['Location'], '/web_redirect_newpath')
+
     def test_header_injection(self):
         response = self.fetch("/header_injection")
         self.assertEqual(response.body, b"ok")
index 62f3779df58d48687f0d4e7bfa0f1ed64148a9ac..155da550d28913c1e974d3ca61408ffd0e257eb5 100644 (file)
@@ -650,8 +650,7 @@ class RequestHandler(object):
         else:
             assert isinstance(status, int) and 300 <= status <= 399
         self.set_status(status)
-        self.set_header("Location", urlparse.urljoin(utf8(self.request.uri),
-                                                     utf8(url)))
+        self.set_header("Location", utf8(url))
         self.finish()
 
     def write(self, chunk):