From: Miikka Koskinen Date: Sat, 9 Mar 2013 10:53:38 +0000 (+0200) Subject: Use session cookies when following redirects X-Git-Tag: v1.2.0~18^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5bb2be9a2300ccc3c1901d2f85afb79cfb9e02f1;p=services%2Fpython-requests.git 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. --- diff --git a/requests/sessions.py b/requests/sessions.py index 979c003..c9126c1 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 []