cookie的存儲
cookie是瀏覽器支持的一種本地存儲方式。以dict,鍵值對方式存儲。
{"sessionkey": "123"}
瀏覽器會自動對於它進行解析。
http請求是一種無狀態的請求
用戶向服務器發起的兩次請求之間是沒有狀態的。也就是服務器並不知道這是同一個用戶發的。
有狀態請求(cookie)

服務器a發回來的id會放到服務器a的域之下。不能跨域訪問cookie。
使用瀏覽器隨便打開一個網頁,然后f12打開。
比如我使用的Chrome瀏覽器

會找到存儲在瀏覽器本地的cookie值
點擊clear all清空所有的cookie f5刷新頁面,會發現又把這些cookie值進來。
如果將用戶名和密碼直接保存在cookie,可以實現最垃圾最簡略版本的自動登錄。
解決cookie放在本地不安全的問題(session)
用戶在第一次請求后,瀏覽器回復的id既可以是用戶的user id。
也可以一段任意的字符串,我們把它叫做session id
根據用戶名和密碼,服務器會采用自己的規則生成session id。這個session id保存在本地cookie。瀏覽器請求服務器會攜帶。
輸入用戶名 & 密碼 調用 login(), 后端程序會根據用戶名密碼生成session id。保存在數據庫中。 用戶登錄之后,需要通過這個session id取出這些基本信息。
Django的默認表中的session表就記錄了用戶登錄時,后端我們Django為用戶生成的sessionid。


可以看到session key value 和過期時間。
我們可以清空這張表的數據。運行項目進行登錄。
此時通過f12查看瀏覽器在本地存儲的session id。可以看到如下圖和我們數據庫中的一致。
session_key 發到瀏覽器叫做session id
通過session id 用戶訪問任何一個頁面都會攜帶,服務器就會認識。
Setting.py中,

這個app會攔截我們每次的request請求,在request中找到session id,然后去數據表中進行查詢。
然后通過session key 去找到session data。此時直接為我們取出了user。
在服務器返回瀏覽器的response中也會直接加上session id
cookie是瀏覽器本地存儲機制,存在域名之下,存儲不安全。
服務器在返回id時通過規則生成一串字符,並設置了過期時間。存儲在服務器端(數據庫)
