python使用cookie库操保存cookie详解


Posted in Python onMarch 03, 2014

Cookie用于服务器实现会话,用户登录及相关功能时进行状态管理。要在用户浏览器上安装cookie,HTTP服务器向HTTP响应添加类似以下内容的HTTP报头:

Set-Cookie:session=8345234;expires=Sun,15-Nov-2013 15:00:00 GMT;path=/;domain=baidu.com

expires是cookie的生存周期,path是cookie的有效路径,domain是cookie的有效域.

路径"path"用于设置可以读取一个cookie的最顶层的目录.将cookie的路径设置为你的网页最顶层的目录可以让该该目录下的所有网页都能访问该cookie.

方法:在你的cookie中加入path=/; 如果你只想让"food" 目录中的网页可以使用该cookie,则你加入path=/food.

domain:有些网站有许多小的域名,例如百度可能还在"news.baidu.com" "zhidao.baidu.com" 和"v.baidu.com" 域名下有网页.如果想让"baidu.com"下的所有机器都可以读取该cookie,必须在cookie中加入 "domain=.baidu.com" .

用户浏览器会存储Cookie直到过期,浏览器会向符合path和domain的服务器发送类似以下内容的HTTP请求报头:

Cookie:session=8345234。

例如,登陆www.baidu.com的时候,百度服务器发送回的HTTP响应报头中cookie是:

Set-Cookie:H_PS_PSSID=4681_4567_1452_9876_4759; path=/; domain=.baidu.com
Set-Cookie:BDSVRTM=74; path=/

浏览器的HTTP请求报头:

Cookie:BAIDUID=0FD996SDFG12********107B9C227F4C:FG=1; locale=zh; bdshare_firstime=1384567418140; NBID=D830DD2345HH2818A9F4134E5A2D778D3B:FG=1; H_PS_LC=4_shadu2014; BD_CK_SAM=1; H_PS_PSSID=4681_4567_1452_9876_4759

浏览器将cookie发送回HTTP服务器时,使用key=value字符串的编码形式,不返回expires,path和domain等可选属性。

cookie字符串通常位于HTTP_COOKIE环境变量中,可以如下读取:

import os
print "Content-type: text/plain\n"
if "HTTP_COOKIE" in os.environ:
    print os.environ["HTTP_COOKIE"]
else:
    print "HTTP_COOKIE not set!"

Python中Cookie模块(python3中为http.cookies)提供了一个类似字典的特殊对象SimpleCookie,其中存储并管理着称为Morsel的cookie值集合。

每个Morsel都有name,value以及可选属性(expires,path,domain,comment,max-age,secure,version,httponly)。

SimpleCookie可使用output()方法创建以HTTP报头形式表示的cookie数据输出,用js_output()方法生成包含javascript代码的字符串。

用HTTP_COOKIE生成cookie:

cookie=Cookie.SimpleCookie(os.environ['HTTP_COOKIE'])
print cookie.output()

set cookie:

import Cookie
import datetime
import randomexpiration = datetime.datetime.now() + datetime.timedelta(days=30)
cookie = Cookie.SimpleCookie()
cookie["session"] = random.randint(1,1000000000)
cookie["session"]["domain"] = ".baidu.com"
cookie["session"]["path"] = "/"
cookie["session"]["expires"] = expiration.strftime("%a, %d-%b-%Y %H:%M:%S PST")
print "Content-type: text/plain"
print cookie.output()
print
print "Cookie set with: " + cookie.output()

输出:

Content-type: text/plain
Set-Cookie: session=155209565; Domain=.jayconrod.com; expires=Mon, 03-Mar-2014 07:42:47 PST; Path=/
Cookie set with: Set-Cookie: session=155209565; Domain=.jayconrod.com; expires=Mon, 03-Mar-2014 07:42:47 PST; Path=/
Python 相关文章推荐
Python读写文件方法总结
Jun 09 Python
Python实现对象转换为xml的方法示例
Jun 08 Python
对pandas的行列名更改与数据选择详解
Nov 12 Python
python读取大文件越来越慢的原因与解决
Aug 08 Python
PYTHON实现SIGN签名的过程解析
Oct 28 Python
Python算法中的时间复杂度问题
Nov 19 Python
关于ResNeXt网络的pytorch实现
Jan 14 Python
Python模块future用法原理详解
Jan 20 Python
在Sublime Editor中配置Python环境的详细教程
May 03 Python
提高python代码运行效率的一些建议
Sep 29 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
Jan 08 Python
Python实战之实现康威生命游戏
Apr 26 Python
简单的通用表达式求10乘阶示例
Mar 03 #Python
python显示天气预报
Mar 02 #Python
pyqt4教程之实现半透明的天气预报界面示例
Mar 02 #Python
windows下python模拟鼠标点击和键盘输示例
Feb 28 #Python
python抓取网页中的图片示例
Feb 28 #Python
使用python分析git log日志示例
Feb 27 #Python
python去掉字符串中重复字符的方法
Feb 27 #Python
You might like
php 防止单引号,双引号在接受页面转义
2008/07/10 PHP
7个超级实用的PHP代码片段
2011/07/11 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
2016/06/15 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
JavaScript游戏之是男人就下100层代码打包
2010/11/08 Javascript
JavaScript 中Date对象的格式化代码方法汇总
2017/09/06 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
2017/10/27 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
Vue下拉框回显并默认选中随机问题
2018/09/06 Javascript
js实现移动端轮播图
2020/12/21 Javascript
详解puppeteer使用代理
2018/12/27 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
2020/07/21 Javascript
基于Vue中的父子传值问题解决
2020/07/27 Javascript
[02:20]DOTA2亚洲邀请赛 IG战队出场宣传片
2015/02/07 DOTA
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
Python中文分词工具之结巴分词用法实例总结【经典案例】
2017/04/15 Python
Python中装饰器兼容加括号和不加括号的写法详解
2017/07/05 Python
ActiveMQ:使用Python访问ActiveMQ的方法
2019/01/30 Python
pygame实现俄罗斯方块游戏(AI篇1)
2019/10/29 Python
pytorch下使用LSTM神经网络写诗实例
2020/01/14 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
HTML5 绘制图像(上)之:关于canvas元素引领下一代web页面的问题
2013/04/24 HTML / CSS
吃透移动端 Html5 响应式布局
2019/12/16 HTML / CSS
法国奢华女性时尚配饰网上商店:Monnier Frères
2016/08/27 全球购物
2019年Java 最常见的 面试题
2016/10/19 面试题
妇产科护士自我鉴定
2013/10/15 职场文书
会计实习生自我鉴定
2013/12/12 职场文书
创业计划书中要认真思考的问题
2013/12/28 职场文书
前台文员个人求职信范文
2014/01/05 职场文书
消防应急演练方案
2014/02/12 职场文书
园林技术专业求职信
2014/07/28 职场文书
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书
事业单位考察材料范文
2014/12/25 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书
浅谈Redis主从复制以及主从复制原理
2021/05/29 Redis