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 相关文章推荐
在Mac OS上搭建Python的开发环境
Dec 24 Python
Python在不同目录下导入模块的实现方法
Oct 27 Python
使用tensorflow实现AlexNet
Nov 20 Python
python 接口返回的json字符串实例
Mar 27 Python
pandas进行数据的交集与并集方式的数据合并方法
Jun 27 Python
python调用自定义函数的实例操作
Jun 26 Python
python networkx 包绘制复杂网络关系图的实现
Jul 10 Python
基于python调用psutil模块过程解析
Dec 20 Python
Pytorch 之修改Tensor部分值方式
Dec 27 Python
Python类继承和多态原理解析
Feb 05 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
May 22 Python
python和node.js生成当前时间戳的示例
Sep 29 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
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
2012/03/27 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
WAMP环境中扩展oracle函数库(oci)
2015/06/26 PHP
利用PHP将部分内容用星号替换
2020/04/21 PHP
php实现倒计时效果
2015/12/19 PHP
PHP使用第三方即时获取物流动态实例详解
2017/04/27 PHP
js取两个数组的交集|差集|并集|补集|去重示例代码
2013/08/07 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
jQuery代码实现发展历程时间轴特效
2015/07/30 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
jquery.Callbacks的实现详解
2016/11/30 Javascript
Angular2学习笔记——详解路由器模型(Router)
2016/12/02 Javascript
原生js实现手风琴功能(支持横纵向调用)
2017/01/13 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
js HTML5 canvas绘制图片的方法
2017/09/08 Javascript
JS处理数据四舍五入(tofixed与round的区别详解)
2017/10/26 Javascript
实战node静态文件服务器的示例代码
2018/03/08 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
Python爬虫实现selenium处理iframe作用域问题
2021/01/27 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
草莓网官网:StrawberryNET
2019/08/21 全球购物
Made in Design英国:设计家具、照明、家庭装饰和花园家具
2019/09/24 全球购物
口头翻译求职人自荐信
2013/12/07 职场文书
办公室内勤岗位职责范本
2013/12/09 职场文书
公司办公室岗位职责
2014/03/19 职场文书
银行求职自荐信
2014/06/30 职场文书
护理专业自荐信范文
2015/03/06 职场文书
公务员处分决定书
2015/06/25 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
2021/06/29 Python
JavaScript原型链详解
2021/11/07 Javascript