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中使用next()方法操作文件的教程
May 24 Python
在Python 3中实现类型检查器的简单方法
Jul 03 Python
恢复百度云盘本地误删的文件脚本(简单方法)
Oct 21 Python
pycharm设置注释颜色的方法
May 23 Python
使用Python处理Excel表格的简单方法
Jun 07 Python
python自动化UI工具发送QQ消息的实例
Aug 27 Python
python使用 request 发送表单数据操作示例
Sep 25 Python
使用Python实现正态分布、正态分布采样
Nov 20 Python
Ubuntu中配置TensorFlow使用环境的方法
Apr 21 Python
用opencv给图片换背景色的示例代码
Jul 08 Python
Python之京东商品秒杀的实现示例
Jan 06 Python
解决pytorch 损失函数中输入输出不匹配的问题
Jun 05 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 array_merge函数
2014/08/31 PHP
JQuery 学习笔记 选择器之二
2009/07/23 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
2015/01/26 Javascript
js判断鼠标左、中、右键哪个被点击的方法
2015/01/27 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
JS获取图片lowsrc属性的方法
2015/04/01 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
javascript实现检验的各种规则
2015/07/31 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
完美解决jQuery fancybox ie 无法显示关闭按钮的问题
2016/11/29 Javascript
详解vue.js2.0父组件点击触发子组件方法
2017/05/10 Javascript
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
JavaScript使用类似break机制中断forEach循环的方法
2018/11/13 Javascript
JavaScript判断浏览器运行环境的详细方法
2019/06/30 Javascript
p5.js绘制创意自画像
2019/11/04 Javascript
Vuex实现数据增加和删除功能
2019/11/11 Javascript
Python求解平方根的方法
2015/03/11 Python
解决Ubuntu pip 安装 mysql-python包出错的问题
2018/06/11 Python
Python 获取div标签中的文字实例
2018/12/20 Python
python可视化实现代码
2019/01/15 Python
Python里字典的基本用法(包括嵌套字典)
2019/02/27 Python
Django框架之登录后自定义跳转页面的实现方法
2019/07/18 Python
这可能是最好玩的python GUI入门实例(推荐)
2019/07/19 Python
Django bulk_create()、update()与数据库事务的效率对比分析
2020/05/15 Python
解决Python数据可视化中文部分显示方块问题
2020/05/16 Python
html5 分层屏幕适配的方法
2018/03/16 HTML / CSS
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
印度服装购物网站:Limeroad
2018/09/26 全球购物
英国标准协会商店:BSI Shop
2019/02/25 全球购物
2014新生大学四年计划书
2014/09/21 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
我们的节日端午节活动总结
2015/02/11 职场文书
《合作意向书》怎么写?
2019/08/20 职场文书
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python