添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
温文尔雅的野马  ·  curl.setopt·  22 小时前    · 
坏坏的山羊  ·  SpringBoot2.X ...·  2 天前    · 
火爆的山楂  ·  Spring ...·  2 天前    · 
绅士的书包  ·  How to Use the Paho ...·  3 天前    · 
朝气蓬勃的茶叶  ·  唐代帝陵·  2 月前    · 
帅呆的海龟  ·  查看论文信息·  3 月前    · 

源代码: Lib/http/cookies.py

http.cookies 模块定义的类将 cookie 的概念抽象了出来,这是一种 HTTP 状态的管理机制。它既支持简单的纯字符串形式的 cookie,也为任何可序列化数据类型的 cookie 提供抽象。

以前,该模块严格套用 RFC 2109 RFC 2068 规范中描述的解析规则。后来人们发现,MSIE 3.0 并不遵循这些规范中的字符规则,而且目前许多浏览器和服务器在处理 cookie 时也放宽了解析规则。 因此,这里用到的解析规则没有那么严格。

字符集 string.ascii_letters string.digits !#$%&'*+-.^_`|~: 给出了本模块允许出现在 cookie 名称中的有效字符集(如 key )。

在 3.3 版更改: “:”字符可用于有效的 cookie 名称。

当遇到无效 cookie 时会触发 CookieError ,所以若 cookie 数据来自浏览器,一定要做好应对无效数据的准备,并在解析时捕获 CookieError

exception http.cookies. CookieError

出现异常的原因,可能是不符合 RFC 2109 :属性不正确、 Set-Cookie 头部信息不正确等等。

class http.cookies. BaseCookie ( [ input ] )

类似字典的对象,字典键为字符串,字典值是 Morsel 实例。请注意,在将键值关联时,首先会把值转换为包含键和值的 Morsel 对象。

若给出 input ,将会传给 load() 方法。

BaseCookie. value_encode ( val )

返回元组 (real_value, coded_value) val 可为任意类型, coded_value 则会转换为字符串。 BaseCookie 中的此方法未实现任何编码工作——只为能被子类重写。

通常在 value_decode 的取值范围内, value_encode() value_decode() 应为可互逆操作。

BaseCookie. js_output ( attrs = None )

返回一段可供嵌入的 JavaScript 代码,若在支持 JavaScript 的浏览器上运行,其作用如同发送 HTTP 头部信息一样。

attrs 的含义与 output() 的相同。

BaseCookie. load ( rawdata )

rawdata 为字符串,则会作为 HTTP_COOKIE 进行解析,并将找到的值添加为 Morsel 。 如果是字典值,则等价于:

for k, v in rawdata.items():
    cookie[k] = v
class http.cookies.Morsel

对键/值对的抽象,带有 RFC 2109 的部分属性。

morsel 对象类似于字典,键的组成是常量——均为有效的 RFC 2109 属性,包括:

  • expires

  • comment

  • domain

  • max-age

  • secure

  • version

  • httponly

  • samesite

  • httponly 属性指明了该 cookie 仅在 HTTP 请求中传输,且不能通过 JavaScript 访问。这是为了减轻某些跨站脚本攻击的危害。

    samesite 属性指明了浏览器不得与跨站请求一起发送该 cookie。这有助于减轻 CSRF 攻击的危害。此属性的有效值为 “Strict”和“Lax”。

    键不区分大小写,默认值为 ''

    在 3.5 版更改: 现在,__eq__() 会同时考虑 keyvalue

    在 3.7 版更改: Attributes key, value and coded_value are read-only. Use set() for setting them.

    在 3.8 版更改: 增加对 samesite 属性的支持。

    Morsel.js_output(attrs=None)

    返回一段可供嵌入的 JavaScript 代码,若在支持 JavaScript 的浏览器上运行,其作用如同发送 HTTP 头部信息一样。

    attrs 的含义与 output() 的相同。

    Morsel.update(values)

    用字典 values 中的值更新 morsel 字典中的值。若有 values 字典中的键不是有效的 RFC 2109 属性,则会触发错误。

    在 3.5 版更改: 无效键会触发错误。

    >>> 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 >>> C["string"].value 'seven' >>> print(C) Set-Cookie: number=7 Set-Cookie: string=seven This page is licensed under the Python Software Foundation License Version 2. Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License. See History and License for more information.
    The Python Software Foundation is a non-profit corporation. Please donate. 最后更新于 Nov 18, 2023 (16:06 UTC). Found a bug?