Python中Cookie的处理惩罚(一)Cookie库
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=D830DD2345Hp818A9F4134E5A2D778D3B: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 random expiration = 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=/