Source code: Lib/http/cookies.py The The module formerly strictly applied the parsing rules described in the RFC 2109 and RFC 2068 specifications. It has since been discovered that MSIE 3.0x doesn’t follow the character rules outlined in those specs and also many current day browsers and servers have relaxed parsing rules when comes to Cookie handling. As a result, the parsing rules used are a bit less strict. The character set,
Changed in version 3.3: Allowed ‘:’ as a valid Cookie name character. Note On encountering an invalid cookie, http.cookies. CookieError ¶Exception failing because of RFC 2109 invalidity: incorrect attributes, incorrect header, etc. classhttp.cookies. BaseCookie ([input])¶This
class is a dictionary-like object whose keys are strings and whose values are If input
is given, it is passed to the http.cookies. SimpleCookie ([input])¶
This class derives from See also Modulehttp.cookiejar HTTP cookie handling for web clients. The This is the state management specification implemented by this module. Cookie Objects¶BaseCookie. value_decode (val)¶Return a
tuple BaseCookie. value_encode (val)¶Return a tuple In general, it should be the case that BaseCookie. output (attrs=None, header='Set-Cookie:',
sep='\r\n')¶Return a string representation suitable to be sent as HTTP headers. attrs and header are sent to each BaseCookie. js_output (attrs=None)¶Return an embeddable JavaScript snippet, which, if run on a browser which supports JavaScript, will act the same as if the HTTP headers was sent. The meaning for attrs is the same as in
BaseCookie. load (rawdata)¶If rawdata is a string, parse it as an
for k, v in rawdata.items(): cookie[k] = v Morsel Objects¶classhttp.cookies. Morsel ¶Abstract a key/value pair, which has some RFC 2109 attributes. Morsels are dictionary-like objects, whose set of keys is constant — the valid RFC 2109 attributes, which are
The attribute The attribute The keys are case-insensitive and their default value is Changed in version 3.5: Changed in version 3.7: Attributes
Changed in version 3.8: Added support for the Morsel. value ¶The value of the cookie. Morsel. coded_value ¶The encoded value of the cookie — this is what should be sent. Morsel. key ¶The name of the cookie. Morsel. set (key, value, coded_value)¶Set the key, value and coded_value attributes. Morsel. isReservedKey (K)¶Whether K is a member of the set of keys of a Morsel. output (attrs=None, header='Set-Cookie:')¶Return a string representation of the Morsel, suitable to be sent as an HTTP header. By default, all the attributes are included, unless
attrs is given, in which case it should be a list of attributes to use. header is by default Morsel. js_output (attrs=None)¶Return an embeddable JavaScript snippet, which, if run on a browser which supports JavaScript, will act the same as if the HTTP header was sent. The meaning for attrs is the same as in Morsel. OutputString (attrs=None)¶Return a string representing the Morsel, without any surrounding HTTP or JavaScript. The meaning for attrs is the same as in
Morsel. update (values)¶Update the values in the Morsel dictionary with the values in the dictionary values. Raise an error if any of the keys in the values dict is not a valid RFC 2109 attribute. Changed in version 3.5: an error is raised for invalid keys. Morsel. copy (value)¶Return a shallow copy of the Morsel object. Changed in version 3.5: return a Morsel object instead of a dict. Morsel. setdefault (key,
value=None)¶Raise an error if key is not a valid RFC 2109 attribute, otherwise behave the same as
Example¶The following example demonstrates how to use the >>> from http import cookies >>> C = cookies.SimpleCookie() >>> C["fig"] = "newton" >>> C["sugar"] = "wafer" >>> print(C) # generate HTTP headers Set-Cookie: fig=newton Set-Cookie: sugar=wafer >>> print(C.output()) # same thing Set-Cookie: fig=newton Set-Cookie: sugar=wafer >>> C = cookies.SimpleCookie() >>> C["rocky"] = "road" >>> C["rocky"]["path"] = "/cookie" >>> print(C.output(header="Cookie:")) Cookie: rocky=road; Path=/cookie >>> print(C.output(attrs=[], header="Cookie:")) Cookie: rocky=road >>> C = cookies.SimpleCookie() >>> C.load("chips=ahoy; vienna=finger") # load from a string (HTTP header) >>> print(C) Set-Cookie: chips=ahoy Set-Cookie: vienna=finger >>> C = cookies.SimpleCookie() >>> C.load('keebler="E=everybody; L=\\"Loves\\"; fudge=\\012;";') >>> print(C) Set-Cookie: keebler="E=everybody; L=\"Loves\"; fudge=\012;" >>> C = cookies.SimpleCookie() >>> C["oreo"] = "doublestuff" >>> C["oreo"]["path"] = "/" >>> print(C) Set-Cookie: oreo=doublestuff; Path=/ >>> C = cookies.SimpleCookie() >>> C["twix"] = "none for you" >>> C["twix"].value 'none for you' >>> C = cookies.SimpleCookie() >>> C["number"] = 7 # equivalent to C["number"] = str(7) >>> C["string"] = "seven" >>> C["number"].value '7' >>> C["string"].value 'seven' >>> print(C) Set-Cookie: number=7 Set-Cookie: string=seven |