python 标准库 http.cookies
最近需要教孩子自然拼读,所以我想还是每天用一个关键词描述吧。
traffic .n UK /træf.ɪk/ US /ˈtræf.ɪk/ 交通(拥堵)
There was heavy/a lot of traffic on the roads this morning.今天早晨道路上车流量很大。
We got stuck in traffic for several hours.我们碰上交通阻塞被堵了好几个小时。
New measures have been introduced to try and ease traffic congestion in the city.这个城市已经采取了新措施,试图缓解交通拥堵。
Five people were injured in a traffic accident (= one involving vehicles).有5人在交通事故中受伤。
US I heard about the accident on the traffic report on the radio this morning.我在今早电台的交通节目中听到了这起事故。
Air traffic has increased 30 percent in the last decade.在过去的10年里,空中交通量增加了30%。
python 标准库学习 http.cookies
http.cookies 模块定义了类实现了http状态管理机制和cookies概念。不仅支持字符串格式化的cookie值,还支持任何序列化对象的cookie值。
模块的实现完全遵循 RFC 2109 和 RFC 2068 协议规范。但MSIE 3.0x不遵循那些规范中概述的字符规则,并且当涉及Cookie处理时,许多当今的浏览器和服务器已经放宽了解析规则。
Cookie名定义字符集中非法字符囊括在 string.ascii_letters
,string.digits
和 !#$%&'*+-.^_
|~:`中。
核心类
exception
http.cookies.CookieError
违反RFC 2109 规范中的错误,例如:不正确的属性或不正确的Set-Cookies header
class
http.cookies.BaseCookie([*input*])
这个类是一个字典类型的对象,键是字符串,值是
Morsel
的实例。如果设置参数
input
,实际上是通过load()
方法设置。class
http.cookies.SimpleCookie([*input*])
这个类是从
BaseCookie
继承过来并重写了value_decode()
andvalue_encode()
方法。SimpleCookies支持字符串格式的cookie values.
Cookie对象
BaseCookie.value_decode(val)
以字符串形式返回 一个元组(real_value,coded_value)。其中
real_value
可以是任意类型。此方法在[BaseCookie
](https://docs.python.org/zh-cn/3.8/library/http.cookies.html#http.cookies.BaseCookie)中不进行解码,---因为已经存在被重写了。BaseCookie.value_encode
(val)以字符串形式返回 一个元组(real_value,coded_value)。其中
val
可以是任意类型,coded_value
通常被转换为字符串类型。BaseCookie.output(*attrs=None*, *header='Set-Cookie:'*, *sep='\r\n'*)
返回一个字符串表示的 用来适配 Http请求头,属性的相关方法。分隔符默认使用
\r\n
(CRLF)。BaseCookie.js_output(*attrs=None*)
返回一个绑定Javascript脚本的对象,如果运行的浏览器支持Javascript脚本,作为输出和 out_put()的实现一样。
BaseCookie.load
(rawdata)`如果参数rawdata 是字符串,转化为 HTTP_COOKIE对象,并添加值。
如果参数是字典类型,可以这样取值。
1
2for k, v in rawdata.items():
cookie[k] = v
Morsel 对象
class http.cookies.Morsel
部分实现了 RFC 2109 规范的键值对抽象类。
Morsels是一个字典类型的对象, 里面的键是一个常量,同RFC 2109 规范,如下面所示:
expires
path
comment
domain
max-age
secure
version
httponly
samesite
httponly
属性声明了cookie只能通过HTTP 请求传输,并且包括Javascript脚本。这将会被合并到跨站脚本部分。
samesite
声明了浏览器是否允许发送跨站请求的cookie。这将会避免CSRF 攻击。无效的值包括 “Strict” and “Lax”。
这些键是大小写敏感的.默认值是''
.
Morsel.value
Cookie的值。
Morsel.coded_value
编码后的cookie值。Morsel.key
cookie的名字
Morsel.set
(key, value, coded_value)设置
key
,value
和coded_value* attributes
属性。Morsel.isReservedKey(*K*)
判断 键 知否是
Morsel
里的键的成员。Morsel.output(*attrs=None*, *header='Set-Cookie:'*)
返回字符串格式的
Morsel
。默认包括所有的属性,除非指定声明attrs 属性,header
参数默认值是"Set-Cookie:"
.Morsel.js_output(*attrs=None*)
返回一个绑定Javascript脚本的对象,如果运行的浏览器支持Javascript脚本,作为输出和 out_put()的实现一样。
Morsel.OutputString(*attrs=None*)
返回一个字符串格式的 Morsel,不包括Http或Javascript。
Morsel.update(*values*)
根据参数值更新Morsel 字典。如果参数不在字典中则引发异常。具体可以参考 RFC 2109
Morsel.copy(*value*)
返回一个 Morsel 对象的浅拷贝。
Morsel.setdefault(*key*, *value=None*)
Raise an error if key is not a valid RFC 2109 attribute, otherwise behave the same as
dict.setdefault()
.
实例
1 | from http import cookies |
小结
顺便了解了下http协议的相关内容,附链接。
RFC 2068 :http超文本传输协议1.0
RFC 2616 :http超文本传输协议1.1
RFC 2109: http状态管理机制