http.cookies— HTTP 状态管理 ¶
module defines classes for abstracting the concept of cookies, an HTTP state management mechanism. It supports both simple string-only cookies, and provides an abstraction for having any serializable data-type as cookie value.
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.
3.3 版改变： 允许 : 作为有效 Cookie 名称字符。
Exception failing because of RFC 2109 invalidity: incorrect attributes, incorrect Set-Cookie header, etc.
This class is a dictionary-like object whose keys are strings and whose values are
instances. Note that upon setting a key to a value, the value is first converted to a
containing the key and the value.
. SimpleCookie supports strings as cookie values. When setting the value, SimpleCookie calls the builtin
to convert the value to a string. Values received from HTTP are kept as strings.
抽象键/值对，有一些 RFC 2109 属性。
Morsels are dictionary-like objects, whose set of keys is constant — the valid RFC 2109 attributes, which are
specifies that the browser is not allowed to send the cookie along with cross-site requests. This helps to mitigate CSRF attacks. Valid values for this attribute are “Strict” and “Lax”.
The keys are case-insensitive and their default value is
The encoded value of the cookie — this is what should be sent.
设置 key , value and coded_value 属性。
is a member of the set of keys of a
Return a string representation of the Morsel, suitable to be sent as an HTTP header. By default, all the attributes are included, unless
is given, in which case it should be a list of attributes to use.
is by default
The meaning for
is the same as in
The meaning for
is the same as in
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 属性。
3.5 版改变： an error is raised for invalid keys.
Return a shallow copy of the Morsel object.
3.5 版改变： return a Morsel object instead of a dict.
>>> 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