Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >cookie模块学习

cookie模块学习

作者头像
用户2936342
发布于 2018-08-27 06:04:45
发布于 2018-08-27 06:04:45
22100
代码可运行
举报
文章被收录于专栏:nummynummy
运行总次数:0
代码可运行

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

1.创建和设置Cookie

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import Cookie

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

输出结果为:

Set-Cookie: name=jim

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

2.Morsel

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

输出结果为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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首部需要对值编码,才能正确解析。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import Cookie

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

输出结果如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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()方法来实现。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
关于Cookie的细致总结
Cookie概述 HTTP是一种无状态的请求/响应协议,用户通过浏览器访问Web站点后,Web服务端没有可用信息来判断是哪个用户发起的请求,更加无法知道下次访问的还是不是上次访问的用户,无法识别当前用户。最初,为了解决这个问题出现了很多解决方案,例如客户端IP地址跟踪、用户登录认证、URL中嵌入识别信息等,但都没有很好的解决根本问题。然而,Cookie的设计实现很好的解决了这个问题。用户通过浏览器访问Web站点后,服务端会将一些Key/Value组合的键值对通过Set-Cookie或Set-Cookie2返
JavaQ
2018/04/04
9660
Cookie
Cookie 是服务器保存在浏览器的一小段文本信息。浏览器每次向服务器发出请求,就会自动附上这段信息。
代码之风
2018/10/31
1.8K0
一文搞明白Cookie、Session与Token
HTTP 协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;Session 和 Cookie 的主要目的就是为了弥补 HTTP 的无状态特性
中龙技术
2022/09/30
1.7K0
一文搞明白Cookie、Session与Token
实用,完整的HTTP cookie指南
cookie 是后端可以存储在用户浏览器中的小块数据。 Cookie 最常见用例包括用户跟踪,个性化以及身份验证。
前端小智@大迁世界
2020/08/26
6.5K0
实用,完整的HTTP cookie指南
不惧面试:HTTP协议(3) - Cookie
v博客前言 先交代下背景,写这个系列的原因是总结自己遇到的面试题以及可能遇到的题目,更重要的是,今年定的目标是掌握网络这一块的知识点,先是搞懂HTTP协议,然后是TCP/IP协议,再就是WCF如何运
悟空聊架构
2018/05/18
5200
aiohttp 异步http请求-11.ClientResponse 获取响应headers 和cookies
前言 ClientResponse 获取接口返回的headers 和cookies 响应 headers 可以使用 ClientResponse.headers 查看服务器的响应 assert resp.headers == { 'ACCESS-CONTROL-ALLOW-ORIGIN': '*', 'CONTENT-TYPE': 'application/json', 'DATE': 'Tue, 15 Jul 2014 16:49:51 GMT', 'SERVER': 'g
上海-悠悠
2022/04/27
1.8K0
【Web技术】582- 聊聊 Cookie “火热”的 SameSite 属性
2 月份发布的 Chrome 80 版本中默认屏蔽了第三方的 Cookie,在灰度期间,就导致了阿里系的很多应用都产生了问题,为此还专门成立了小组,推动各 BU 进行改造,目前阿里系基本已经改造完成。所有的前端团队估计都收到过通知,也着实加深了一把大家对于 Cookie 的理解,所以很可能就此出个面试题,而即便不是面试题,当问到 HTTP 相关内容的时候,不妨也扯到这件事情来,一能表明你对前端时事的跟进,二还能借此引申到前端安全方面的内容,为你的面试加分。
pingan8787
2020/05/14
1.9K0
【Web技术】582- 聊聊 Cookie “火热”的 SameSite 属性
Python爬虫番外篇之Cookie和Session
coders
2018/01/04
6880
Python爬虫番外篇之Cookie和Session
关于 Cookie,了解这些就足够了
Cookie 是用户浏览器保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。
皮小蛋
2020/03/02
1.9K0
Cookie详解整理
1.Cookie的诞生 由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的。Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用。比如判断用户是否是第一次访问网站。目前最新的规范是RFC 6265,它是一个由浏览器服务器共同协作实现的规范。 2.Cookie的处理分为: 1.服务器像客户端发送cookie 2.浏览器将cookie保存 3之后每次http请求浏览器都会将cookie发送给服务器端,服务器端的发送与解析 3.发送cookie 服务器端像客户端发送Cookie
joshua317
2018/04/16
8340
python学习三——urllib.request.urlopen()学习
因为python3.6自带的urllib库,所以我们也不用再安装了,直接使用就好了。urllib库有如下模块
菜鸟小白的学习分享
2020/07/15
2.1K0
python学习三——urllib.request.urlopen()学习
小饼干Cookie的大魅力
早期互联网只是用于简单的页面浏览,并没有交互,服务器也无法知道不同的请求是否来自同一个浏览器,不知道某用户上一次做了什么。每次请求都是相互完全独立的,这也是 HTTP 协议无状态特征的表现。这种缺陷显然无法满足交互式 Web 发展的需求,Cookie 作为一种解决这一问题的方案,被当时最强大的网景浏览器公司提出。
天存信息
2021/06/21
8620
小饼干Cookie的大魅力
【HTTP】客户端识别与cookie机制
​ 然而,大多数产品都希望提供一个类“免责声明”的文档,然后主动管理该DNT。所以我们只能借助其他方式(这里常用的方式是第三方Cookie,见文档Cookie章节)去实现,下述主要描述了一些用以进行客户端识别的机制。
奋飛
2019/08/15
1.2K0
面试官:说下Cookie和Session的关系和区别
在技术面试中,经常被问到“Cookie和Session的区别”,大家都知道一些,Session比Cookie安全,Session是存储在服务器端的,Cookie是存储在客户端的,然而如果让你更详细地说明,恐怕就不怎么清楚了。
公众号 IT老哥
2021/01/14
16.6K0
面试官:说下Cookie和Session的关系和区别
cookie操作
set_cookie(name, value, domain=None, expires=None, path=’/’, expires_days=None)
星哥玩云
2022/09/14
5390
cookie操作
全面解读HTTP Cookie
今天webryan给team做了一个关于HTTP cookie的分享,从各个方面给大家介绍一下大家耳熟能详的Cookie。主要是翻了维基百科的很多内容,因为维基百科的逻辑实在是很清晰:),ppt就不分享了,把原始的草稿贴出来给大家。欢迎批评指正。
j_bleach
2019/07/02
9760
python 2.7 下urllib2 常见用法总结
urllib2做为python下,在httplib之上再次封装的强大html协议实现,应用非常广泛。
黯然销魂掌
2018/09/27
2.6K0
很全很全的 前端 本地存储方式讲解
程序员宝库关注即可习得新技能! cookie前言 网络早期最大的问题之一是如何管理状态。简而言之,服务器无法知道两个请求是否来自同一个浏览器。当时最简单的方法是在请求时,在页面中插入一些参数,并在下一个请求中传回参数。这需要使用包含参数的隐藏的表单,或者作为URL参数的一部分传递。这两个解决方案都手动操作,容易出错。cookie出现来解决这个问题。 作用 cookie是纯文本,没有可执行代码。存储数据,当用户访问了某个网站(网页)的时候,我们就可以通过cookie来向访问者电脑上存储数据,或者某些网站为了辨
企鹅号小编
2018/01/17
2.3K0
很全很全的 前端 本地存储方式讲解
9.Flask Cookie和Session
cookie:在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前是哪个用户了。cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4kb。因此使用cookie只能存储一些小量的数据。
zhang_derek
2018/08/30
1K0
python爬虫—–request模块学习及案例
python3中: str 使用encode方法转化为 bytes bytes通过decode转化为str
全栈程序员站长
2021/04/19
3470
python爬虫—–request模块学习及案例
相关推荐
关于Cookie的细致总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验