全國(guó)咨詢(xún)/投訴熱線:400-618-4000

首頁(yè)技術(shù)文章正文

python如何使用Cookie?

更新時(shí)間:2020-08-07 來(lái)源:黑馬程序員 瀏覽量:

學(xué)習(xí)目標(biāo):

掌握 Cookie 的定義和使用

Cookie 定義

Cookie,有時(shí)也用其復(fù)數(shù)形式Cookies.

指的是由服務(wù)端生成, 保存在客戶端的一種數(shù)據(jù)存儲(chǔ)形式,內(nèi)部以 key-value 鍵值對(duì)形式存儲(chǔ), value大小有限制(最大為4kb), 數(shù)據(jù)不安全。

背景:

Cookie 最早是網(wǎng)景公司的前雇員 Lou Montulli 在 1993 年 3 月的發(fā)明。Cookie 是由服務(wù)器端生成,發(fā)送給User-Agent(一般是瀏覽器),瀏覽器會(huì)將 Cookie 的 key/value 保存到某個(gè)目錄下的文本文件內(nèi),下次請(qǐng)求同一網(wǎng)站時(shí)就發(fā)送該 Cookie 給服務(wù)器(前提是瀏覽器設(shè)置為啟用 cookie )。Cookie 名稱(chēng)和值可以由服務(wù)器端開(kāi)發(fā)自己定義,這樣服務(wù)器可以知道該用戶是否是合法用戶以及是否需要重新登錄等。服務(wù)器可以利用 Cookies 包含信息的任意性來(lái)篩選并經(jīng)常性維護(hù)這些信息,以判斷在 HTTP 傳輸中的狀態(tài)。Cookies 最典型記住用戶名。

建議:

Cookie 是存儲(chǔ)在瀏覽器中的一段純文本信息,建議不要存儲(chǔ)敏感信息如密碼,因?yàn)殡娔X上的瀏覽器可能被其它人使用。

Cookie 的特點(diǎn)

·Cookie 以鍵值對(duì) Key-Value 形式進(jìn)行信息的存儲(chǔ)

·Cookie 基于域名安全,不同域名的 Cookie 是不能互相訪問(wèn)的

例如:

保存在 www.baidu.com 域名下面的 cookie 不能夠被其他域名的訪問(wèn)

設(shè)置 Cookie

可以通過(guò) HttpResponse 對(duì)象中的 set_cookie 方法來(lái)設(shè)置 cookie。

# 使用方法: 
# 創(chuàng)建 response 對(duì)象
response = HttpResponse()
# 調(diào)用對(duì)象的 set_cookie() 函數(shù)
response.set_cookie(key,  value,  max_age)


參數(shù)解析:

key: cookie 中保存信息的名稱(chēng)

value: cookie 中保存信息時(shí), 名稱(chēng)對(duì)應(yīng)的值部分

max_age: cookie 中保存信息的有效期, 超過(guò)有效期, key-value 失效

其中 max_age 單位為秒, 默認(rèn)為 None. 如果設(shè)置 None 值, 則關(guān)閉瀏覽器失效。

例如:

response.set_cookie('itcast', 'python', max_age=3600)


讀取 Cookie

可以通過(guò) **HttpRequest** 對(duì)象( request )的 **COOKIES** 屬性來(lái)讀取本次請(qǐng)求攜帶的 cookie 值。

# 使用方法: 
# 其中: request.COOKIES 為字典類(lèi)型
value = request.COOKIES.get('key')


例如:

request.COOKIES 為字典類(lèi)型, 可以使用字典的 get( )

例如:

value = request.COOKIES.get('itcast')    # python


總結(jié):

·cookie 用于保持前后端狀態(tài)

·cookie 的設(shè)置為: response.set_cookie( key, value, max_age=時(shí)間(s))

·cookie 的獲取: request.COOKIES.get( key )


猜你喜歡:

python函數(shù)是什么,怎么用?

python培訓(xùn)之搭建elk遇到問(wèn)題和解決方案

python中的字典如何使用?

Python培訓(xùn)課程

分享到:
在線咨詢(xún) 我要報(bào)名
和我們?cè)诰€交談!