From 5d5790019dee3b4402aa335db5ff77e1ca05f39c Mon Sep 17 00:00:00 2001 From: Brian Muller Date: Wed, 14 Sep 2016 23:05:08 -0400 Subject: [PATCH 1/2] do not include url fragments in requests --- aiohttp/client.py | 1 + tests/test_client_functional.py | 39 +++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/aiohttp/client.py b/aiohttp/client.py index 28dd7b917d4..e8135e8f9f3 100644 --- a/aiohttp/client.py +++ b/aiohttp/client.py @@ -181,6 +181,7 @@ def _request(self, method, url, *, skip_headers.add(istr(i)) while True: + url, _ = urllib.parse.urldefrag(url) cookies = self._cookie_jar.filter_cookies(url) diff --git a/tests/test_client_functional.py b/tests/test_client_functional.py index 00d1ba46030..27bee1909eb 100644 --- a/tests/test_client_functional.py +++ b/tests/test_client_functional.py @@ -374,6 +374,45 @@ def handler_ok(request): yield from resp.release() +@asyncio.coroutine +def test_drop_fragment_on_redirect(create_app_and_client): + @asyncio.coroutine + def handler_redirect(request): + return web.Response(status=301, headers={'Location': '/ok#fragment'}) + + @asyncio.coroutine + def handler_ok(request): + return web.Response(status=200) + + app, client = yield from create_app_and_client() + app.router.add_route('GET', '/ok', handler_ok) + app.router.add_route('GET', '/redirect', handler_redirect) + + resp = yield from client.get('/redirect') + try: + assert resp.status == 200 + assert resp.url.endswith('/ok') + finally: + yield from resp.release() + + +@asyncio.coroutine +def test_drop_fragment(create_app_and_client): + @asyncio.coroutine + def handler_ok(request): + return web.Response(status=200) + + app, client = yield from create_app_and_client() + app.router.add_route('GET', '/ok', handler_ok) + + resp = yield from client.get('/ok#fragment') + try: + assert resp.status == 200 + assert resp.url.endswith('/ok') + finally: + yield from resp.release() + + @asyncio.coroutine def test_history(create_app_and_client): @asyncio.coroutine From 9d08b9bcdbdd91977ca4ff5999bd781b73128943 Mon Sep 17 00:00:00 2001 From: Brian Muller Date: Thu, 15 Sep 2016 10:14:58 -0400 Subject: [PATCH 2/2] Added myself to CONTRIBUTORS.txt and filed a new entry to CHANGES.rst --- CHANGES.rst | 2 +- CONTRIBUTORS.txt | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index eb9aef5fc71..f7935b7efdb 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -131,7 +131,7 @@ CHANGES - `aiohttp.TCPConnector` uses asynchronous DNS resolver if available by default #1152 -- +- Conform to RFC3986 - do not include url fragments in client requests #1174 - diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 2ba637ed269..ab7a0f73b5d 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -26,6 +26,7 @@ Ben Bader Benedikt Reinartz Brett Cannon Brian C. Lane +Brian Muller Boris Feld Carl George Chien-Wei Huang @@ -133,4 +134,4 @@ Yusuke Tsutsumi Марк Коренберг Семён Марьясин Pau Freixes -Alexey Firsov \ No newline at end of file +Alexey Firsov