Cookie(網頁身份證)
博客注重簡潔易概,只講述最精華的部分,在這裏你能查到最有用的信息
1.簡述Cookie
- Cookie,有時也用其複數形式Cookies,指某些網站爲了辨別用戶身份、進行session跟蹤而儲存在用戶本地終端上的數據(通常經過加密)。
- Cookie最早是網景公司的前僱員Lou Montulli在1993年3月的發明。
- Cookie是由服務器端生成,發送給User-Agent(一般是瀏覽器),瀏覽器會將Cookie的key/value保存到某個目錄下的文本文件內,下次請求同一網站時就發送該Cookie給服務器(前提是瀏覽器設置爲啓用cookie)。
- Cookie名稱和值可以由服務器端開發自己定義,這樣服務器可以知道該用戶是否是合法用戶以及是否需要重新登錄等。服務器可以利用Cookies包含信息的任意性來篩選並經常性維護這些信息,以判斷在HTTP傳輸中的狀態。Cookies最典型記住用戶名。
- Cookie是存儲在瀏覽器中的一段純文本信息,建議不要存儲敏感信息如密碼,因爲電腦上的瀏覽器可能被其它人使用。
2.Cookie的特點
- Cookie以鍵值對的格式進行信息的存儲。
- Cookie基於域名安全,不同域名的Cookie是不能互相訪問的,如訪問lanyy.icu時向瀏覽器中寫了Cookie信息,使用同一瀏覽器訪問baidu.com時,無法訪問到lanyy.icu寫的Cookie信息。
- 當瀏覽器請求某網站時,會將瀏覽器存儲的跟網站相關的所有Cookie信息提交給網站服務器。
- 兩個點的乾貨鐵汁們可還行?繼續往下走吧,既然翻開了my博客,不會讓你失望的
3. 設置Cookie
可以通過HttpResponse對象中的set_cookie方法來設置cookie。
HttpResponse.set_cookie(cookie名, value=cookie值, max_age=cookie期限)#max_age3600s
- max_age 單位爲秒,默認爲None。如果是臨時cookie,可將max_age設置爲None。
舉個栗子:
def demo_view(request):
response = HttpResponse('ok')
response.set_cookie('hao', 'python1') # 臨時cookie
response.set_cookie('xuan', 'python2', max_age=3600) # 有效期一小時
return response
1.服務端響應設置Cookie
#普通設置
HttpResponse.set_cookie(key,value='',max_age = None,expires = None,path ='/',domain = None,secure = None,httponly = False,samesite = None)
#加鹽(不懂得鐵汁問百度) 普通cookie是明文傳輸的,可以直接在客戶端直接打開,所以需要加鹽,解鹽之後才能查看
HttpResponse.set_signed_cookie(key,value ='',salt='鹽值' ,max_age = None,expires = None,path ='/',domain = None,secure = None,httponly = False,samesite = None)
- expires:具體過期日期
- path=’/’:指定那個url可以訪問到cookie;‘/’是所有; path=’/’
- domain=None(None代表當前域名):指定那個域名以及它下面的二級域名(子域名)可以訪問這個cookie
- secure=False:https安全相關
- httponly=False:限制只能通過http傳輸,JS無法在傳輸中獲取和修改
2.客戶端獲取Cookie
#普通獲取
HttpRequest.COOKIES['key']
#獲取加鹽的cookie
HttpRequest.get_signed_cookie(key,default = RAISE_ERROR,salt ='',max_age = None)#返回已簽名cookie的值,default是設置默認值(當沒有獲取到cookie的時候),salt鹽值提供加密保護
3.客戶端刪除Cookie
HttpResponse.delete_cookie(key,path ='/',domain = None) #刪除cookie中的key值,path是指定路徑,domain是指定域
4.讀取Cookie
可以通過HttpRequest對象的COOKIES屬性來讀取本次請求攜帶的cookie值。request.COOKIES爲字典類型。
def demo_view(request):
cookie1 = request.COOKIES.get('hao')
print(cookie1)
return HttpResponse('OK')
Cookie就是這麼簡單,但是非常重要,包括以後如果做Spider(爬蟲)會經常跟Cookie打交道,所以如果看的雲裏霧裏的鐵汁上拉再啃食一遍博客。
@Author:HaoXuan