当前位置:
首页 > Python基础教程 >
-
Python3标准库:http.cookies HTTP cookie
1. http.cookies HTTP cookie
http.cookies模块为大多数符合RFC2109的cookie实现一个解析器。这个实现没有标准那么严格,因为MSIE3.0x不支持完整的标准。
1.1 创建和设置cookie
可以用cookie为基于浏览器的应用实现状态管理,因此,cookie通常由服务器设置,并由客户存储和返回。下面给出一个最简单的例子,创建一个cookie设置一个键值对。
- from http import cookies
- c = cookies.SimpleCookie()
- c['mycookie'] = 'cookie_value'
- print(c)
输出是一个合法的Set-Cookie首部,可以作为HTTP响应的一部分传递到客户。
1.2 Morsel
还可以控制 cookie的其他方面,如到期时间、路径和域。实际上,cookie的所有RFC属性都可以通过表示cookie值的Morse1对象来管理。
- from http import cookies
- import datetime
- def show_cookie(c):
- print(c)
- for key, morsel in c.items():
- print()
- print('key =', morsel.key)
- print(' value =', morsel.value)
- print(' coded_value =', morsel.coded_value)
- for name in morsel.keys():
- if morsel[name]:
- print(' {} = {}'.format(name, morsel[name]))
- c = cookies.SimpleCookie()
- # A cookie with a value that has to be encoded
- # to fit into the header
- c['encoded_value_cookie'] = '"cookie,value;"'
- c['encoded_value_cookie']['comment'] = 'Has escaped punctuation'
- # A cookie that only applies to part of a site
- c['restricted_cookie'] = 'cookie_value'
- c['restricted_cookie']['path'] = '/sub/path'
- c['restricted_cookie']['domain'] = 'PyMOTW'
- c['restricted_cookie']['secure'] = True
- # A cookie that expires in 5 minutes
- c['with_max_age'] = 'expires in 5 minutes'
- c['with_max_age']['max-age'] = 300 # seconds
- # A cookie that expires at a specific time
- c['expires_at_time'] = 'cookie_value'
- time_to_live = datetime.timedelta(hours=1)
- expires = (datetime.datetime(2020, 4, 8, 18, 30, 14) +
- time_to_live)
- # Date format: Wdy, DD-Mon-YY HH:MM:SS GMT
- expires_at_time = expires.strftime('%a, %d %b %Y %H:%M:%S')
- c['expires_at_time']['expires'] = expires_at_time
- show_cookie(c)
这个例子使用两个不同的方法设置到期的cookie。其中一个方法将max-age设置为一个秒数,另一个方法将expires设置为一个日期时间,达到这个日期时间就会丢弃这个cookie。
Cookie和Morsel对象都相当于字典。Morsel响应一个固定的键集。
expires
path
comment
domain
secure
version
Cookie实例的键是所存储的各个cookie的名。这个信息也可以从Morsel的键属性得到。
1.3 编码的值
cookie首部值必须经过编码才能被正确的解析。
- from http import cookies
- c = cookies.SimpleCookie()
- c['integer'] = 5
- c['with_quotes'] = 'He said, "Hello, World!"'
- for name in ['integer', 'with_quotes']:
- print(c[name].key)
- print(' {}'.format(c[name]))
- print(' value={!r}'.format(c[name].value))
- print(' coded_value={!r}
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式