亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

詳解Python中的Cookie模塊使用

系統(tǒng) 1834 0

最近在用GAE開發(fā)自己的博客程序。雖然GAE的API沒有顯式的提供操作Cookie的方法,但他現(xiàn)有的架構(gòu),使我們有足夠的自由來操作Cookie。

Cookie 模塊,顧名思義,就是用來操作Cookie的模塊。Cookie這塊小蛋糕,玩過Web的人都知道,它是Server與Client保持會話時(shí)用到的信息 切片。 Http協(xié)議本身是無狀態(tài)的,也就是說,同一個(gè)客戶端發(fā)送的兩次請求,對于Web服務(wù)器來說,沒有直接的關(guān)系。既然這樣,有人會問,既然Http是無狀態(tài) 的, 為什么有些網(wǎng)頁,只有輸入了用戶名與密碼通過驗(yàn)證之后才可以訪問?那是因?yàn)椋簩τ谕ㄟ^身份驗(yàn)證的用戶,Server會偷偷的在發(fā)往Client的數(shù)據(jù)中添 加 Cookie,Cookie中一般保存一個(gè)標(biāo)識該Client的唯一的ID,Client在接下來對服務(wù)器的請求中,會將該ID以Cookie的形式一并 發(fā)往Server,Server從回傳回來的Cookie中提取ID并與相應(yīng)的用戶綁定起來,從而實(shí)現(xiàn)身份驗(yàn)證。說白了,Cookie就是一個(gè)在服務(wù)器與客戶端之間相互傳遞的字符串(下圖通過FireFox的FireBug插件查看訪問google.com時(shí)的Cookie)。 越扯越遠(yuǎn)了,回到我們的主題:Python標(biāo)準(zhǔn)模塊 ― Cookie。

詳解Python中的Cookie模塊使用_第1張圖片

(上圖是Http請求頭中的Cookie信息)

詳解Python中的Cookie模塊使用_第2張圖片

(上圖是Http響應(yīng)中的Cookie信息)
Cooke模塊中定義了4個(gè)直接操作Cookie的類:BaseCookie、SimpleCookie、SerialCookie、 SmartCookie。其中,BaseCookie是基類,定義了操作Cookie的公共部分,其他3個(gè)類都繼承自BaseCookie,它們之間的區(qū) 別僅僅在于序列化數(shù)據(jù)的方式不同。下面簡單講解這些類的使用。

BaseCookie基類: BaseCookies的行為非常像dict,可以用鍵/值對的形式來操作它,但是kye必須是字符串,value是Morsel對象 (下面會講到Morsel)。BaseCookies定義了編碼/解碼,輸入/輸出操作的公共規(guī)范:

BaseCookie.value_encode(val):對數(shù)據(jù)進(jìn)行序列化/反序列化。這些方法都返回字符串,以便通過Http傳輸。

BaseCookie.output():返回字符串,該字符串可以作為Http響應(yīng)頭發(fā)往客戶端。

BaseCookie.js_output():返回嵌入js腳本的字符串,瀏覽器通過執(zhí)行該腳本,就可以得到cooke數(shù)據(jù)。

BaseCookie.load(newdata):解析字符串為Cookie數(shù)據(jù)。

SimpleCookie、SerialCookie、SmartCookie都繼承自BaseCookie,具有一致的行為,它們各自對 BaseCookie的value_decode, value_encode進(jìn)行了重寫并實(shí)現(xiàn)自己的序列化/反序列化策略,其中:

  • ??? SimpleCookie內(nèi)部使用str()來對數(shù)據(jù)進(jìn)行序列化;
  • ??? SerialCookie則通過pickle模塊來序列化反序列化數(shù)據(jù);
  • ??? SmartCookie相對聰明點(diǎn),對于非字符串?dāng)?shù)據(jù),使用pickle序列/反序列化,否則將字符串原樣返回。

下面的例子簡單的說明如何使用Cookie模塊:
?

            
import Cookie
 
c = Cookie.SimpleCookie()
c['name'] = 'DarkBull'
c['address'] = 'ChinaHangZhou'
c['address']['path'] = '/' 
# 路徑
c['address']['domain'] = 'appspot.com' 
# domain
c['address']['expires'] = 'Fir, 01-Oct-2010 20:00:00 GMT'  
# 過期時(shí)間
print c.output()
print c.js_output()
 
# 輸出結(jié)果,與上圖對照
# Set-Cookie: address=ChinaHangZhou; Domain=appspot.com; expires=Fir, 01-Oct-2010 20:00:00 GMT; Path=/
# Set-Cookie: name=DarkBull
 
# 作為腳本輸出
# 
            
            
 
# 
            
          

Morsel類 : 用于表示Cookie中每一項(xiàng)數(shù)據(jù)的屬性而抽象的類。這些屬性包括:expires, path, comment, domain, max-age, secure, version等等(看上圖下劃線標(biāo)注部分)。如果你玩過web,對這些應(yīng)該不會陌生,可以在RCF2109中找到他們的具體定義

Morsel.key,Morsel.value:Cookie數(shù)據(jù)項(xiàng)的key/value(value可以是二進(jìn)制數(shù)據(jù));

Morsel.coded_value:數(shù)據(jù)編碼后得到的字符串。Http協(xié)議是基于文本的協(xié)議,Server無法直接向Client發(fā)送二進(jìn)制數(shù)據(jù),只有序列化成字符串后,才能發(fā)往Client;

Morsel.set(key, value, coded_value):設(shè)置Cookie數(shù)據(jù)項(xiàng)的key、value、coded_value;

Morsel.isReversvedKey(key):如果key是expires, path, comment, domain, max-age, secure, version, httponly中的一個(gè),返回True,否則返回False;

Morsel.output():返回型如“Set-Cookie: …”的字符串,表示一個(gè)Cookie數(shù)據(jù)項(xiàng);

Morsel.js_output():返回Cookie數(shù)據(jù)項(xiàng)的腳本字符串;

Morsel.OutputString(): 返回Morsel的字符串表示;

Morsel使用示例:
?

            
import Cookie
 
m = Cookie.Morsel()
m.set('name', 'DarkBull', 'DarkBull')
m['expires'] = 'Fir, 01-Oct-2010 20:00:00 GMT'
m['domain'] = 'appspot.com'
print m.output()
 
# 結(jié)果
# Set-Cookie: name=DarkBull; Domain=appspot.com; expires=Fir, 01-Oct-2010 20:00:00

          


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!?。?/p>

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品合集一区二区 | 成人18免费网站 | 国产com | 一级毛片真人免费观看 | 激情狠狠干 | 欧美日韩亚洲精品国产色 | 国产午夜永久福利视频在线观看 | 国产精品毛片久久久久久久 | 欧美人交性视频在线香蕉 | 一个色在线 | 国产成人咱精品视频免费网站 | 欧美大尺码毛片 | 色xxx | 在线一级视频 | 毛片免费在线观看 | 色播影院性播影院私人影吧 | 久久精品99成人中文字幕880 | 亚洲毛片一级带毛片基地 | 免费在线观看黄色小视频 | 性生生活网站免费 | 国产激情一区二区三区在线观看 | 日韩免费一区二区 | 精品九九久久 | 不卡神马影院 | 免费国产a | 日本一级特黄毛片免费视频 | 好吊色青青青国产欧美日韩 | 在线视频99| 黄色免费网站在线观看 | 久久这里只有精品2 | 国产亚洲精品一区二区在线播放 | 精品中文字幕一区二区三区四区 | 国产小网站 | 色网在线免费观看 | 国产啪爱视频精品免视 | 久久最新 | 日韩高清在线二区 | 国产一区二区三区乱码网站 | 四虎成人4hutv影院 | 成人伊人网| 久久综合九色综合狠狠97 |