mirror of
https://github.com/kennethreitz/requests.git
synced 2026-06-05 22:50:18 +00:00
resolve_redirects now checks for a scheme before converting the scheme to lowercase, added tests or the scheme casing
This commit is contained in:
@@ -98,8 +98,9 @@ class SessionRedirectMixin(object):
|
||||
url = '%s:%s' % (parsed_rurl.scheme, url)
|
||||
|
||||
# The scheme should be lower case...
|
||||
scheme, uri = url.split('://')
|
||||
url = '%s://%s' % (scheme.lower(), uri)
|
||||
if '://' in url:
|
||||
scheme, uri = url.split('://', 1)
|
||||
url = '%s://%s' % (scheme.lower(), uri)
|
||||
|
||||
# Facilitate non-RFC2616-compliant 'location' headers
|
||||
# (e.g. '/path/to/resource' instead of 'http://domain.tld/path/to/resource')
|
||||
|
||||
@@ -495,6 +495,9 @@ class RequestsTestCase(unittest.TestCase):
|
||||
headers['ACCEPT'.encode('ascii')],
|
||||
'application/json'
|
||||
)
|
||||
def test_uppercase_scheme(self):
|
||||
r = requests.get('HTTP://example.com/')
|
||||
self.assertEqual(r.status_code, 200)
|
||||
|
||||
def test_transport_adapter_ordering(self):
|
||||
s = requests.Session()
|
||||
@@ -702,5 +705,10 @@ class TestCaseInsensitiveDict(unittest.TestCase):
|
||||
self.assertEqual(frozenset(cid), keyset)
|
||||
|
||||
|
||||
|
||||
def test_uppercase_scheme_redirect(self):
|
||||
r = requests.get(httpbin('redirect-to'), params={'url': 'HTTP://example.com/'})
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user