– HTTP状态管理 – Internet协议和支持(Python教程)(参考资料)
http.cookies
– HTTP状态管理
源代码: Lib / http / cookies.py
http.cookies
模块定义用于抽象概念的类,一种HTTP状态管理机制。它支持简单的string-onlycookies,并为任何可序列化的数据类型ascookie值提供抽象.
该模块以前严格应用了 RFC 2109 和 RFC 2068 规格。后来发现,MSIE 3.0x不遵循这些规范中概述的字符规则,并且当前很多浏览器和服务器在处理Cookie时都有宽松的解析规则。结果,使用的解析规则不那么严格了
字符集string.ascii_letters
, string.digits
和!#$%&"*+-.^_`|~:
表示此模块允许的Cookie名称中的有效字符集(如key
).
在版本3.3中更改:允许’:’作为有效的Cookie名称字符.
注意
遇到无效的cookie,CookieError
提出,所以如果你的新手数据来自浏览器,你应该总是准备无效数据并抓住CookieError
解析.
-
由于RFC 2109 无效:不正确的属性,不正确的Set-Cookie标题等等
-
本课程来源于
BaseCookie
并取代value_decode()
和value_encode()
成为身份和str()
分别
//参见
- 模块
http.cookiejar
- 用于网络的HTTP cookie处理clients。
http.cookiejar
和http.cookies
模块不相互依赖. - RFC 2109 – HTTP状态管理机制
- 这是本模块实现的状态管理规范.
Cookie Objects
-
从字符串表示中返回解码值。返回值可以是任何类型。这个方法在
BaseCookie
中什么都不做 – 它存在,所以它可以被覆盖.
-
返回编码值。val可以是任何类型,但返回值必须是astring。这个方法在
BaseCookie
中没有任何作用 – 它存在,所以它可以被覆盖.一般来说,应该是
value_encode()
和value_decode()
是value_decode.
-
返回一个可嵌入的JavaScript代码段,如果在支持JavaScript的浏览器上运行,则会像发送HTTP标头一样运行.
的含义attrs与中的相同
output()
.
-
如果rawdata是一个字符串,将其解析为
HTTP_COOKIE
并将其中的值添加为Morsel
s。如果是字典,则相当于:for k, v in rawdata.items(): cookie[k] = v
Morsel Objects
-
摘要一个键/值对,它有一些 RFC 2109 attributes.
Morsels是类字典对象,其键集是常量 – 有效 RFC 2109 属性,
expires
path
comment
domain
max-age
secure
version
httponly
属性
httponly
指定cookie仅在HTTP请求中传输,并且无法通过JavaScript访问。这是为了减轻某些形式的跨站点脚本.键不区分大小写,默认值为
""
.在版本3.5中更改:
__eq__()
现在需要key
和value
考虑到了
-
饼干的价值.
-
饼干的编码值 – 这是应该发送的.
-
这个名字饼干.
-
设置key, value和coded_valueattributes.
-
是否K是
Morsel
.
-
返回Morsel的字符串表示形式,适合作为HTTPheader发送。默认情况下,包括所有属性,除非attrs给出,在这种情况下,它应该是要使用的属性列表。header默认是
"Set-Cookie:"
.
-
返回一个可嵌入的JavaScript代码段,如果在支持JavaScript的浏览器上运行,则会像发送HTTP标头一样运行.
的含义attrs与中的相同
output()
.
-
返回一个表示Morsel的字符串,没有任何周围的HTTP或Java脚本
的含义attrs与中的相同
output()
.
-
使用字典values中的值更新Morsel字典中的值。如果values dict中的任何一个键没有效果,则引发错误 RFC 2109 属性
更改版本3.5:无效键错误.
-
返回Morsel对象的浅层副本.
更改版本3.5:返回一个Morsel对象而不是一个dict.
-
如果密钥不是有效则报错 RFC 2109 属性,否则与
dict.setdefault()
.
相同//示例
以下示例演示如何使用http.cookies
module.
>>> from http import cookies>>> C = cookies.SimpleCookie()>>> C["fig"] = "newton">>> C["sugar"] = "wafer">>> print(C) # generate HTTP headersSet-Cookie: fig=newtonSet-Cookie: sugar=wafer>>> print(C.output()) # same thingSet-Cookie: fig=newtonSet-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=ahoySet-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=7Set-Cookie: string=seven
评论被关闭。