Django之cookie、session
會話跟蹤技術
可以把會話理解為客戶端與伺服器之間的一次會晤,在一次會晤中可能會包含多次請求和響應。
一次會話過程中,我們應該注意的是什麼呢?
那就是,一些操作要保證使用者操作的是使用者自己個人的資料。舉個例子來說,你會希望你的賬戶裡的錢被別人轉走嗎?相反,你會希望自己的賬戶多增加一些餘額。
這就是會話跟蹤的必要性。
我們知道HTTP協議是無狀態協議,也就是說每個請求都是獨立的!無法記錄前一次請求的狀態。但HTTP協議中可以使用Cookie來完成會話跟蹤!在Web開發中,使用session來完成會話跟蹤,session底層依賴Cookie技術。
Cookie
什麼是cookie?
Cookie翻譯成中文是小甜點,小餅乾的意思。在HTTP中它表示伺服器送給客戶端瀏覽器的小甜點。其實Cookie是key-value結構,類似於一個python中的字典。隨著伺服器端的響應傳送給客戶端瀏覽器。然後客戶端瀏覽器會把Cookie儲存起來,當下一次再訪問伺服器時把Cookie再發送給伺服器。 Cookie是由伺服器建立,然後通過響應傳送給客戶端的一個鍵值對。客戶端會儲存Cookie,並會標註出Cookie的來源(哪個伺服器的Cookie)。當客戶端向伺服器發出請求時會把所有這個伺服器Cookie包含在請求中傳送給伺服器,這樣伺服器就可以識別客戶端了!
cookie規範
- Cookie大小上限為4KB;
- 一個伺服器最多在客戶端瀏覽器上儲存20個Cookie;
- 一個瀏覽器最多儲存300個Cookie;
上面的資料只是HTTP的Cookie規範,但在瀏覽器大戰的今天,一些瀏覽器為了打敗對手,為了展現自己的能力起見,可能對Cookie規範“擴充套件”了一些,例如每個Cookie的大小為8KB,最多可儲存500個Cookie等!但也不會出現把你硬碟佔滿的可能!
注意,不同瀏覽器之間是不共享Cookie的。也就是說在你使用IE訪問伺服器時,伺服器會把Cookie發給IE,然後由IE儲存起來,當你在使用FireFox訪問伺服器時,不可能把IE儲存的Cookie傳送給伺服器。所以說,cookie具體到一個瀏覽器,針對一個伺服器進行key—value存值。
Django下設定與讀取cookie
cookie的設定針對響應體進行設定,Django的響應體有:HttpResponse()、render()、redirect()
設定:
response=HttpResponse(‘登入成功’)
response.set_cookie(key,value)
讀取的時候 request.COOKIE.get()