mirror of
https://github.com/kennethreitz/requests.git
synced 2026-06-05 22:50:18 +00:00
Make sure session cookies do not overwrite explicit request cookies
Implement RequestsCookieJar.copy Use RequestsCookieJar.update when merging cookiejars
This commit is contained in:
+4
-2
@@ -307,8 +307,10 @@ class RequestsCookieJar(cookielib.CookieJar, collections.MutableMapping):
|
||||
self._cookies_lock = threading.RLock()
|
||||
|
||||
def copy(self):
|
||||
"""This is not implemented. Calling this will throw an exception."""
|
||||
raise NotImplementedError
|
||||
"""Return a copy of this RequestsCookieJar."""
|
||||
new_cj = RequestsCookieJar()
|
||||
new_cj.update(self)
|
||||
return new_cj
|
||||
|
||||
|
||||
def create_cookie(name, value, **kwargs):
|
||||
|
||||
@@ -251,9 +251,10 @@ class Session(SessionRedirectMixin):
|
||||
if not isinstance(cookies, cookielib.CookieJar):
|
||||
cookies = cookiejar_from_dict(cookies)
|
||||
|
||||
# Bubble down session cookies.
|
||||
for cookie in self.cookies:
|
||||
cookies.set_cookie(cookie)
|
||||
# Merge with session cookies
|
||||
merged_cookies = self.cookies.copy()
|
||||
merged_cookies.update(cookies)
|
||||
cookies = merged_cookies
|
||||
|
||||
# Gather clues from the surrounding environment.
|
||||
if self.trust_env:
|
||||
@@ -312,8 +313,7 @@ class Session(SessionRedirectMixin):
|
||||
resp = self.send(prep, **send_kwargs)
|
||||
|
||||
# Persist cookies.
|
||||
for cookie in resp.cookies:
|
||||
self.cookies.set_cookie(cookie)
|
||||
self.cookies.update(resp.cookies)
|
||||
|
||||
return resp
|
||||
|
||||
|
||||
+1
-2
@@ -252,8 +252,7 @@ def add_dict_to_cookiejar(cj, cookie_dict):
|
||||
"""
|
||||
|
||||
cj2 = cookiejar_from_dict(cookie_dict)
|
||||
for cookie in cj2:
|
||||
cj.set_cookie(cookie)
|
||||
cj.update(cj2)
|
||||
return cj
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user