mirror of
https://github.com/kennethreitz/requests.git
synced 2026-06-05 22:50:18 +00:00
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.
This commit is contained in:
@@ -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 []
|
||||
|
||||
Reference in New Issue
Block a user