summaryrefslogtreecommitdiff
path: root/requests/sessions.py
diff options
context:
space:
mode:
authorMiikka Koskinen <miikka.koskinen@iki.fi>2013-03-09 12:53:38 +0200
committerMiikka Koskinen <miikka.koskinen@iki.fi>2013-03-12 18:43:58 +0200
commit5bb2be9a2300ccc3c1901d2f85afb79cfb9e02f1 (patch)
treeb6dfcc852b198521218b787154efcf8facd01ba5 /requests/sessions.py
parente958511df085ace98cfcc45c69129553ba07ee9e (diff)
downloadpython-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.py10
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 []