Merge pull request #1963 from sigmavirus24/fix-redirect-methods
authorKenneth Reitz <me@kennethreitz.org>
Mon, 24 Mar 2014 15:44:14 +0000 (11:44 -0400)
committerKenneth Reitz <me@kennethreitz.org>
Mon, 24 Mar 2014 15:44:14 +0000 (11:44 -0400)
Fix #1955: Do not use original request in redirect

1  2 
requests/sessions.py
test_requests.py

index 79ea7773e1e7ec3fdc84b88a50dacff2b24c86cb,fc5b0ffa18c43a870589de130a1cd03f8046fdff..3d73affdb9d5b48f869981528084b2901d49fd69
@@@ -158,12 -154,25 +158,15 @@@ class SessionRedirectMixin(object)
              prepared_request._cookies.update(self.cookies)
              prepared_request.prepare_cookies(prepared_request._cookies)
  
 -            if 'Authorization' in headers:
 -                # 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):
 -                    del headers['Authorization']
 -
 -            # .netrc might have more auth for us.
 -            new_auth = get_netrc_auth(url) if self.trust_env else None
 -            if new_auth is not None:
 -                prepared_request.prepare_auth(new_auth)
 +            # Rebuild auth and proxy information.
 +            proxies = self.rebuild_proxies(prepared_request, proxies)
 +            self.rebuild_auth(prepared_request, resp)
  
+             # Override the original request.
+             req = prepared_request
              resp = self.send(
-                 prepared_request,
+                 req,
                  stream=stream,
                  timeout=timeout,
                  verify=verify,
index 1bebb1adbd75f1496112d227276f5d93ebac44e3,0b3c106b926451452e5da76a2dc29dbe296c8de0..a2b37e815e03f538b7387410929173db3b13267e
@@@ -17,8 -18,8 +18,9 @@@ from requests.compat import 
      Morsel, cookielib, getproxies, str, urljoin, urlparse)
  from requests.cookies import cookiejar_from_dict, morsel_to_cookie
  from requests.exceptions import InvalidURL, MissingSchema
 +from requests.models import PreparedRequest, Response
  from requests.structures import CaseInsensitiveDict
+ from requests.sessions import SessionRedirectMixin
  
  try:
      import StringIO