diff options
| author | Miikka Koskinen <miikka.koskinen@iki.fi> | 2013-03-09 12:53:38 +0200 |
|---|---|---|
| committer | Miikka Koskinen <miikka.koskinen@iki.fi> | 2013-03-12 18:43:58 +0200 |
| commit | 5bb2be9a2300ccc3c1901d2f85afb79cfb9e02f1 (patch) | |
| tree | b6dfcc852b198521218b787154efcf8facd01ba5 /requests/sessions.py | |
| parent | e958511df085ace98cfcc45c69129553ba07ee9e (diff) | |
| download | python-requests-5bb2be9a2300ccc3c1901d2f85afb79cfb9e02f1.tar.gz | |
Use session cookies when following redirects
When a redirect was followed, only the cookies set by the initial
response were used in the follow-up request. Fixes #1228.
Diffstat (limited to 'requests/sessions.py')
| -rw-r--r-- | requests/sessions.py | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/requests/sessions.py b/requests/sessions.py index 979c0034..c9126c12 100644 --- a/requests/sessions.py +++ b/requests/sessions.py @@ -80,7 +80,7 @@ def merge_kwargs(local_kwarg, default_kwarg): class SessionRedirectMixin(object): def resolve_redirects(self, resp, req, stream=False, timeout=None, - verify=True, cert=None, proxies=None): + verify=True, cert=None, proxies=None, cookies=None): """Receives a Response. Returns a generator of Responses.""" i = 0 @@ -90,7 +90,10 @@ class SessionRedirectMixin(object): prepared_request.hooks = req.hooks prepared_request.method = req.method prepared_request.url = req.url - cookiejar = resp.cookies + + cookiejar = cookiejar_from_dict({}) + cookiejar.update(cookies) + cookiejar.update(resp.cookies) # ((resp.status_code is codes.see_other)) while (('location' in resp.headers and resp.status_code in REDIRECT_STATI)): @@ -408,6 +411,7 @@ class Session(SessionRedirectMixin): cert = kwargs.get('cert') proxies = kwargs.get('proxies') hooks = request.hooks + cookies = self.cookies # Get the appropriate adapter to use adapter = self.get_adapter(url=request.url) @@ -425,7 +429,7 @@ class Session(SessionRedirectMixin): # Redirect resolving generator. gen = self.resolve_redirects(r, request, stream=stream, timeout=timeout, verify=verify, cert=cert, - proxies=proxies) + proxies=proxies, cookies=cookies) # Resolve redirects if allowed. history = [resp for resp in gen] if allow_redirects else [] |
