前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >cookie模块学习

cookie模块学习

作者头像
用户2936342
发布2018-08-27 14:04:45
1960
发布2018-08-27 14:04:45
举报
文章被收录于专栏:nummynummy

Cookie模块定义了一些类用来解析和创建HTTP cookie头部字段。

1.创建和设置Cookie

Cookie通常由服务器端来设置,并由客户存储和返回。

import Cookie

c = Cookie.SimpleCookie()
c["name"] = "jim"
print c.output()

输出结果为:

Set-Cookie: name=jim

输出是一个合法的Set-Cookie首部, 可以作为HTTP响应的一部分传递给客户端。

2.Morsel

还可以通过Cookie的Morsel对象来管理cookie的其他方面,比如到期时间,路径和域等。

import Cookie
import datetime

c = Cookie.SimpleCookie()
c["name"] = "jim"
c["name"]["comment"] = "some comment"
c["name"]["path"] = "/sub/path"
c["name"]["domain"] = "python"
c["name"]["secure"] = True
# 法一,通过max-age设置到期时间
c["name"]["max-age"] = 300
now = datetime.datetime.now()
expires = now + datetime.timedelta(hours=1)
expires_at_time = expires.strftime("%a, %d %b %Y %H:%M:%S")
# 法二,通过expires设置到期时间
c["name"]["expires"] = expires_at_time
print c

输出结果为

Set-Cookie: name=jim; Comment=some comment; Domain=python; expires=Fri, 21 Jul 2017 12:34:53; Max-Age=300; Path=/sub/path; secure

Cookie实例的键是所存储的各个cookie的名称,Morsel对象实际就是cookie名称对应的值,它与字典类似。

3.编码值

cookie首部需要对值编码,才能正确解析。

import Cookie

c = Cookie.SimpleCookie()
c["example"] = 'he said, "hello world "'
print c["example"].key
print c["example"].value
print c["example"].coded_value  

输出结果如下:

example
he said, "hello world "
"he said\054 \"hello world \""

由上可以看出,Morsel.value是cookie的解码值,而Morsel.coded_value表示用来将值传输到客户。

4.接收和解析Cookie首部

当客户端收到服务器端发送的Set-Cookie首部后,在后续请求中它会使用一个Cookie首部把这些cookie返回到服务器,到来的Cookie首部串可能包含了多个cookie值,由分号隔开。

取决于服务器和框架,可以直接从首部或者HTTP_COOKIE环境变量得到cookie,而解码cookie可以通过将串传递给SimpleCookie或者使用load()方法来实现。

# coding:utf-8
import Cookie

HTTP_COOKIE = ";".join([r"name=jim", r"age=12"])

# 方法1
c1 = Cookie.SimpleCookie(HTTP_COOKIE)
print c1

# 方法2
c2 = Cookie.SimpleCookie()
c2.load(HTTP_COOKIE)
print c2

Cookie提供了三个不同的类SimpleCookieSerialCookieSmartCookie。它们的区别在于SimpleCookie只支持解析str类型的cookie,SerialCookie要求所有的值可序列化,SmartCookie两者都支持。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.07.21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.创建和设置Cookie
  • 2.Morsel
  • 3.编码值
  • 4.接收和解析Cookie首部
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档