更新時(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
名稱和值可以由服務(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 中保存信息的名稱
value: cookie 中保存信息時(shí), 名稱對(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 為字典類型 value = request.COOKIES.get('key')
例如:
request.COOKIES 為字典類型, 可以使用字典的 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 )
猜你喜歡: