diff --git a/requests/sessions.py b/requests/sessions.py index aa956d3f..c136a6c8 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')