国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

django框架之cookie/session的使用示例(小結(jié))

2020-02-15 23:12:15
字體:
供稿:網(wǎng)友

一、http協(xié)議無狀態(tài)問題

http協(xié)議沒有提供多次請求之間的關(guān)聯(lián)功能,協(xié)議的本意也并未考慮到多次請求之間的狀態(tài)維持,每一次請求都被協(xié)議認為是一次性的。但在某些場景下,如一次登錄多次訪問,我們希望可以保存登錄狀態(tài),協(xié)議并沒有直接提供會話跟蹤的支持,需要靠其他手段來幫助實現(xiàn)目標。

二、會話跟蹤技術(shù)--cookie

1、對cookie的理解

cookie是一個key-value的數(shù)據(jù)結(jié)構(gòu)(類似python字典),用于保存需要維護狀態(tài)的數(shù)據(jù),cookie與session最大的區(qū)別是cookie的數(shù)據(jù)保存在客戶端,而session把數(shù)據(jù)保存在服務端。 cookie一般由服務器設置,并可以存放在http的請求頭和響應頭中。 cookie由瀏覽器保存,瀏覽器已經(jīng)實現(xiàn)了cookie的保存和發(fā)送,而服務器上對cookie的設置和接收則需要我們配置。 通過cookie,可以在多個會話之間共享一些必要的信息如登錄狀態(tài)數(shù)據(jù)、歷史訪問記錄、個性化定制設置等,以實現(xiàn)會話跟蹤,讓用戶感覺到網(wǎng)站可以'記錄'自己的偏好,減少不必要的重復輸入,從而提升用戶體驗。

2、cookie的使用接口

django的服務端發(fā)送響應有三種方式:
1. return HttpResponse()
2. return render()
3. return redirect()

這三種方法實例化的結(jié)果都是HttpResponse類的實例,可以直接用于設置cookie。

在response對象上執(zhí)行set_cookie(key,value,...)即可設置cookie, 其中特別注意cookie屬性的設置。

cookie的設置

服務器在響應對象上進行set_cookie操作,一旦設置完成,客戶端后續(xù)的請求就可以根據(jù)cookie的屬性規(guī)則攜帶cookie數(shù)據(jù)。

def set_cookie(key, value='', max_age=None, expires=None, path='/',        domain=None, secure=False, httponly=False, samesite=None)

cookie的獲取

服務器在請求對象上通過request.COOKIES得到cookie字典數(shù)據(jù),注意此處拿到的cookie數(shù)據(jù)從安全性來說是未被驗證正確性的。

@cached_propertydef COOKIES(self):  raw_cookie = get_str_from_wsgi(self.environ, 'HTTP_COOKIE', '')  return parse_cookie(raw_cookie)

注意1:cookie在set的時候可以設置它被發(fā)送的范圍,每個cookie都有對應的domain+path的屬性,這約束了cookie發(fā)送范圍,只有當http的請求落在此范圍中的url,才會攜帶此cookie。

注意2:一個cookie就是一個key-value項,不過它還攜帶有屬性。一個cookies是一個字典,保存了很多cookie項,注意單個cookie項和整個cookies字典的關(guān)系。

3、cookie的屬性

max_age:
失效延遲時間,單位是秒,設置成15秒意味著在設置完之后的15秒之內(nèi),此cookie有效,超時之后cookie失效,瀏覽器會刪除失效的cookie。此參數(shù)默認是None,代表著直到瀏覽器關(guān)閉,即默認是會話cookie。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 忻城县| 濉溪县| 木兰县| 茌平县| 焉耆| 晋州市| 綦江县| 九龙坡区| 普陀区| 永嘉县| 稷山县| 施秉县| 西华县| 抚松县| 聂荣县| 宣城市| 青海省| 阜平县| 海南省| 安多县| 和静县| 海安县| 会昌县| 谷城县| 贵定县| 十堰市| 武宁县| 兰考县| 广丰县| 满城县| 永德县| 郴州市| 开江县| 吴川市| 石楼县| 濮阳市| 潢川县| 高平市| 同江市| 静安区| 临武县|