for name in cookie_dict:
cookiejar.set_cookie(create_cookie(name, cookie_dict[name]))
return cookiejar
+
+
+def merge_session_cookies(cookiejar, cookie_dict):
+ """Merges cookie_dict with session CookieJar.
+
+ :param cookiejar: Should be session cookie.
+ :param cookie_dict: Dict of key/values to be merged.
+ """
+ if cookiejar is None:
+ cookiejar = RequestsCookieJar()
+
+ if cookie_dict is not None:
+ for k in cookie_dict:
+ # Session should not be modified by request cookie.
+ if k not in [cookie.name for cookie in cookiejar]:
+ cookiejar.set_cookie(create_cookie(k, cookie_dict[k]))
from datetime import datetime
from .compat import cookielib, OrderedDict, urljoin, urlparse
-from .cookies import cookiejar_from_dict, extract_cookies_to_jar, RequestsCookieJar
+from .cookies import cookiejar_from_dict, extract_cookies_to_jar, RequestsCookieJar, merge_session_cookies
from .models import Request, PreparedRequest
from .hooks import default_hooks, dispatch_hook
from .utils import to_key_val_list, default_headers
extract_cookies_to_jar(self.cookies, prepared_request, resp.raw)
- # Restore original cookies in redirects response.
- headers = resp.request.headers
- try:
- headers['Cookie'] = req.headers['Cookie']
- except KeyError:
- pass
-
i += 1
yield resp
)
prep = self.prepare_request(req)
+ # Add param cookies to session cookies
+ merge_session_cookies(self.cookies, cookies)
+
proxies = proxies or {}
# Gather clues from the surrounding environment.