Repopulate ~/.netrc auth.
authorCory Benfield <lukasaoz@gmail.com>
Wed, 29 Jan 2014 19:13:46 +0000 (19:13 +0000)
committerCory Benfield <lukasaoz@gmail.com>
Wed, 29 Jan 2014 19:13:46 +0000 (19:13 +0000)
requests/sessions.py

index e262aa325d25c36a46548a19da825b09a4d1a6e9..22fe22f87681deb62f73cba13accbf72e05b72d9 100644 (file)
@@ -158,6 +158,23 @@ class SessionRedirectMixin(object):
             prepared_request._cookies.update(self.cookies)
             prepared_request.prepare_cookies(prepared_request._cookies)
 
+            # If we get redirected to a new host, we should strip out any
+            # authentication headers.
+            original_parsed = urlparse(resp.request.url)
+            redirect_parsed = urlparse(url)
+
+            if original_parsed.hostname != redirect_parsed.hostname:
+                try:
+                    del headers['Authorization']
+                except KeyError:
+                    pass
+
+            # However, .netrc might have more auth for us. Let's get it if it
+            # does.
+            new_auth = get_netrc_auth(url)
+            if new_auth is not None:
+                prepared_request.prepare_auth(new_auth)
+
             resp = self.send(
                 prepared_request,
                 stream=stream,