python使用cookie庫操保存cookie詳解
Cookie用于服務(wù)器實(shí)現(xiàn)會話,用戶登錄及相關(guān)功能時進(jìn)行狀態(tài)管理。要在用戶瀏覽器上安裝cookie,HTTP服務(wù)器向HTTP響應(yīng)添加類似以下內(nèi)容的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"用于設(shè)置可以讀取一個cookie的最頂層的目錄.將cookie的路徑設(shè)置為你的網(wǎng)頁最頂層的目錄可以讓該該目錄下的所有網(wǎng)頁都能訪問該cookie.
方法:在你的cookie中加入path=/; 如果你只想讓"food" 目錄中的網(wǎng)頁可以使用該cookie,則你加入path=/food.
domain:有些網(wǎng)站有許多小的域名,例如百度可能還在"news.baidu.com" "zhidao.baidu.com" 和"v.baidu.com" 域名下有網(wǎng)頁.如果想讓"baidu.com"下的所有機(jī)器都可以讀取該cookie,必須在cookie中加入 "domain=.baidu.com" .
用戶瀏覽器會存儲Cookie直到過期,瀏覽器會向符合path和domain的服務(wù)器發(fā)送類似以下內(nèi)容的HTTP請求報頭:
Cookie:session=8345234。
例如,登陸www.baidu.com的時候,百度服務(wù)器發(fā)送回的HTTP響應(yīng)報頭中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發(fā)送回HTTP服務(wù)器時,使用key=value字符串的編碼形式,不返回expires,path和domain等可選屬性。
cookie字符串通常位于HTTP_COOKIE環(huán)境變量中,可以如下讀?。?/P>
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()方法創(chuàng)建以HTTP報頭形式表示的cookie數(shù)據(jù)輸出,用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 "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=/
相關(guān)文章
python中實(shí)現(xiàn)字符串翻轉(zhuǎn)的方法
這篇文章主要介紹了python中實(shí)現(xiàn)字符串翻轉(zhuǎn)的方法,代碼很簡單,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-07-07
將string類型的數(shù)據(jù)類型轉(zhuǎn)換為spark rdd時報錯的解決方法
今天小編就為大家分享一篇關(guān)于將string類型的數(shù)據(jù)類型轉(zhuǎn)換為spark rdd時報錯的解決方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02
Python開啟Http Server的實(shí)現(xiàn)步驟
本文主要介紹了Python開啟Http Server的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
python游戲?qū)崙?zhàn)項目之智能五子棋簡易版
利用Python實(shí)現(xiàn)智能五子棋,實(shí)現(xiàn)之后發(fā)現(xiàn)我玩不贏它!本篇為你帶來用python編寫的五子棋小游戲,文中給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值2021-09-09
Python 開發(fā)工具通過 agent 代理使用的方法
這篇文章主要介紹了Python 開發(fā)工具通過 agent 代理使用的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
Python循環(huán)實(shí)現(xiàn)n的全排列功能
這篇文章主要介紹了Python循環(huán)實(shí)現(xiàn)n的全排列功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09

