self._start_time = time.time()
self._finish_time = None
- scheme, netloc, path, query, fragment = urlparse.urlsplit(native_str(uri))
- self.path = path
- self.query = query
- arguments = parse_qs_bytes(query)
+ self.path, sep, self.query = uri.partition('?')
+ arguments = parse_qs_bytes(self.query)
self.arguments = {}
for name, values in arguments.iteritems():
values = [v for v in values if v]
def get_app(self):
return Application([("/echo", EchoHandler),
("/typecheck", TypeCheckHandler),
+ ("//doubleslash", EchoHandler),
])
def test_query_string_encoding(self):
data = json_decode(response.body)
self.assertEqual(data, {})
+ def test_double_slash(self):
+ # urlparse.urlsplit (which tornado.httpserver used to use
+ # incorrectly) would parse paths beginning with "//" as
+ # protocol-relative urls.
+ response = self.fetch("//doubleslash")
+ self.assertEqual(200, response.code)
+ self.assertEqual(json_decode(response.body), {})
+
class XHeaderTest(HandlerBaseTestCase):
class Handler(RequestHandler):