When looking for a method to add a cookie to an http.cookiejar in Python 3, all of the posts I could find created their own Cookie instance. However, the Cookie documentation states that it should not be necessary. I quote:
This class represents Netscape, RFC 2109 and RFC 2965 cookies. It is not expected that users of http.cookiejar construct their own Cookie instances. Instead, if necessary, call make_cookies() on a CookieJar instance.
Because I already had a request and a response object ready, I decided to use
extract_cookies after adding the extra Cookies to the response headers, like so:
#!/usr/bin/python3 import urllib.request import urllib.parse import http.cookiejar if __name__ == "__main__": cj = http.cookiejar.CookieJar() opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj)) request = urllib.request.Request('http://bneijt.nl/') response = opener.open(request) print("Before") print(cj._cookies) #Only for debugging #Add my own cookie responses here response.headers.add_header('Set-Cookie', 'Life=ok; expires=Sat, 17-Aug-2013 06:49:03 GMT; path=/; domain=.bneijt.nl; HttpOnly') cj.extract_cookies(response, request) print("After") print(cj._cookies)
Not the most beautiful solution, but at least I don't have to make my own Cookie instance. Here is the source.