From 0051837af4fb8b21aac101cbb91f2f81a1853013 Mon Sep 17 00:00:00 2001 From: Cory Benfield Date: Sat, 28 Sep 2013 17:01:32 +0100 Subject: [PATCH] Correctly lowercase a redirect scheme. --- requests/sessions.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/requests/sessions.py b/requests/sessions.py index aa956d3..c136a6c 100644 --- a/requests/sessions.py +++ b/requests/sessions.py @@ -12,7 +12,7 @@ import os from collections import Mapping from datetime import datetime -from .compat import cookielib, OrderedDict, urljoin, urlparse +from .compat import cookielib, OrderedDict, urljoin, urlparse, urlunparse from .cookies import cookiejar_from_dict, extract_cookies_to_jar, RequestsCookieJar from .models import Request, PreparedRequest from .hooks import default_hooks, dispatch_hook @@ -93,9 +93,10 @@ class SessionRedirectMixin(object): url = '%s:%s' % (parsed_rurl.scheme, url) # The scheme should be lower case... - if '://' in url: - scheme, uri = url.split('://', 1) - url = '%s://%s' % (scheme.lower(), uri) + parsed = urlparse(url) + parsed = (parsed.scheme.lower(), parsed.netloc, parsed.path, + parsed.params, parsed.query, parsed.fragment) + url = urlunparse(parsed) # Facilitate non-RFC2616-compliant 'location' headers # (e.g. '/path/to/resource' instead of 'http://domain.tld/path/to/resource') -- 2.34.1