Flask ----session和cookie的理解
阿新 • • 發佈:2018-12-19
1.cookie
因為http協議屬於無狀態協議,它不跟蹤從一個客戶端到另一個客戶端的請求資訊。也就是說即使第一次和伺服器連線後並且登入成功,第二次請求伺服器依然不知道請求的是哪個使用者。 所以使用cookie來解決這個問題:第一次登入成功後,伺服器返回cookie給瀏覽器,然後瀏覽器儲存在本地,當用戶傳送第二次請求時,就會自動的把上次請求儲存的cookie資料攜帶給伺服器,伺服器再根據cookie資料判斷是哪個使用者。
2.session
session和cookie的作用類似,也是用來儲存使用者相關的資訊,儲存在伺服器端。把使用者的資訊經過加密後儲存在session中,然後產生一個唯一的session_id。
3. cookie和session的結合使用
一般有兩種儲存方式:
(1)儲存在伺服器端:通過cookie儲存一個session_id,然後具體的資料則是儲存在session中。如果使用者已經登入,則伺服器會在cookie中儲存一個session_id,下次再請求時,會把該session_id攜帶上來,伺服器根據session_id在session庫中獲取使用者的session資料,就知道使用者到底是誰了。以及之前儲存的一些狀態資訊,這種專業術語叫做server side session。
(2)儲存在客戶端:將session資料加密,然後儲存在cookie中。這種專業術語叫做 client side session。flask框架採用的就是這種方式,但是可以替換成其他形式。
4.flask的session機制
把使用者資訊經過加密後放入到session中,然後把session存放到cookie中。下次請求時,從瀏覽器傳送過來的cookie中讀取到session,然後再從session中讀取資料並解密,獲取最終的使用者資料。這樣可以節省伺服器開銷。