- cookie:存儲在瀏覽器端,是一個key-value結構,有生命時長會在一段時間後自動銷燬,一般用於存儲用戶的信息(例如記住用戶名等),每個瀏覽器最多存儲300個cookie,每個站點最多20個cookie
- session:爲會話控制,用來記錄用戶的一些狀態(例如在沒有登陸的時候是不能直接進入管理頁面),session同樣爲一個key-value結構
工作原理
cookie
- 首先由服務器發送給瀏覽器一個cookie,瀏覽器保存該cookie,在該cookie的有效期間,如果瀏覽器去訪問該站點會攜帶cookie信息,web站點會根據攜帶的cookie信息轉化爲全局變量然後回傳給瀏覽器,起到記錄某些信息的作用,在beego框架中可以直接使用setcookie和getcookie來操作
session
- session保存在服務器端,工作原理爲在瀏覽器本地會存儲一個cookie,然後在訪問站點的時候將cookie信息帶入到後端,後端會根據信息查找是否存在對應session信息,如果存在則執行對應的操作,如果不存在,那麼就會將該用戶的狀態進行回退到登錄或更早的狀態
爲什麼使用
爲什麼使用cookie
cookie可以記錄下我們輸入過的一些信息,在下次訪問的時候可以簡便我們的輸入,有時候會記錄一下web站點的信息,達到加快訪問web站點的作用,並且可以起到對用戶個性化服務的作用
爲什麼使用session
因爲HTTP的無狀態性,所以我們沒有辦法在HTTP發送請求的時候知道當前用戶的狀態,也就是比如說,當前是哪個用戶的之類的這種信息,所以這個時候我們需要session來標識當前的狀態
缺點
cookie
cookie的缺點:cookie再給我們帶來個性化服務的同時,也把我們的信息記錄下來,比如我們訪問某個站點的習慣等,這樣我們的隱私安全很有可能受到威脅
session
因爲創建Session變量有很大的隨意性,可隨時調用,不需要開發者做精確地處理,所以,過度使用session變量將會導致代碼不可讀而且不好維護,session的時效性跟隨瀏覽器關閉而銷燬