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写的一个squid访问日志分析的小程序
Sep 17 Python
Python删除空文件和空文件夹的方法
Jul 14 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
Jun 23 Python
python使用super()出现错误解决办法
Aug 14 Python
Python实现获取照片拍摄日期并重命名的方法
Sep 30 Python
pandas筛选某列出现编码错误的解决方法
Nov 07 Python
详解Python字典的操作
Mar 04 Python
对Django的restful用法详解(自带的增删改查)
Aug 28 Python
python 动态迁移solr数据过程解析
Sep 04 Python
基于python的itchat库实现微信聊天机器人(推荐)
Oct 29 Python
pandas处理csv文件的方法步骤
Oct 16 Python
利用Python将list列表写入文件并读取的方法汇总
Mar 25 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
Ajax PHP分页演示
2007/01/02 PHP
phpQuery让php处理html代码像jQuery一样方便
2015/01/06 PHP
php实现对两个数组进行减法操作的方法
2015/04/17 PHP
php根据一个给定范围和步进生成数组的方法
2015/06/19 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
PHP实现的分解质因数操作示例
2018/08/01 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
2019/05/27 PHP
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
javascript 基础篇2 数据类型,语句,函数
2012/03/14 Javascript
JavaScript输入邮箱自动提示实例代码
2014/01/13 Javascript
Jquery选择器中使用变量实现动态选择例子
2014/07/25 Javascript
Nodejs Post请求报socket hang up错误的解决办法
2014/09/25 NodeJs
jQuery插件ajaxFileUpload异步上传文件
2016/10/19 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
JS 音频可视化插件Wavesurfer.js的使用教程
2018/10/31 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
[58:57]2018DOTA2亚洲邀请赛3月29日小组赛B组 Effect VS VGJ.T
2018/03/30 DOTA
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
Python 数据结构之队列的实现
2017/01/22 Python
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
2018/07/11 Python
Python基于百度云文字识别API
2018/12/13 Python
浅析python的Lambda表达式
2019/02/27 Python
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
季度思想汇报
2014/01/01 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
企业优秀员工事迹材料
2014/05/28 职场文书
中学生民族团结演讲稿
2014/08/27 职场文书
2014年消防工作总结
2014/11/21 职场文书
客户经理岗位职责
2015/01/31 职场文书
师范生小学见习总结
2015/06/23 职场文书
基于PyTorch实现一个简单的CNN图像分类器
2021/05/29 Python