1. 程式人生 > >Cookie與Session的簡單對比

Cookie與Session的簡單對比

在對比它們倆之前,我們首先先來聊聊什麼是Cookie,什麼又是Session?
一、Cookie
Cookie 是在 HTTP 協議下,伺服器或指令碼可以維護客戶工作站上資訊的一種方式。Cookie 是由 Web 伺服器儲存在使用者瀏覽器(客戶端)上的小文字檔案,它可以包含有關使用者的資訊。無論何時使用者連結到伺服器,Web 站點都可以訪問 Cookie 資訊。
有些 Cookie 是臨時的,有些則是持續的。臨時的 Cookie 只在瀏覽器上儲存一段規定的時間,一旦超過規定的時間,該 Cookie 就會被系統清除,持續的 Cookie 則儲存在使用者的 Cookie 檔案中,下一次使用者返回時,仍然可以對它進行呼叫。
在 Cookie 檔案中儲存 Cookie,有些使用者擔心 Cookie 中的使用者資訊被一些別有用心的人竊取,而造成一定的損害。其實,網站以外的使用者無法跨過網站來獲得 Cookie 資訊。如果因為這種擔心而遮蔽 Cookie,肯定會因此拒絕訪問許多站點頁面。
二、Session
Session直接翻譯成中文比較困難,一般都譯成時域。在計算機專業術語中,Session是指一個終端使用者與互動系統進行通訊的時間間隔,通常指從註冊進入系統到登出退出系統之間所經過的時間。以及如果需要的話,可能還有一定的操作空間。
需要注意的是,一個Session的概念需要包括特定的客戶端,特定的伺服器端以及不中斷的操作時間。A使用者和C伺服器建立連線時所處的Session同B使用者和C伺服器建立連線時所處的Session是兩個不同的Session。
session的工作原理
(1)當一個session第一次被啟用時,一個唯一的標識被儲存於本地的cookie中。
(2)首先使用session_start()函式,PHP從session倉庫中載入已經儲存的session變數。
(3)當執行PHP指令碼時,通過使用session_register()函式註冊session變數。
(4)當PHP指令碼執行結束時,未被銷燬的session變數會被自動儲存在本地一定路徑下的session庫中,這個路徑可以通過php.ini檔案中的session.save_path指定,下次瀏覽網頁時可以載入使用。
三、Cookie和Session的對比
cookie是存在於客戶端(瀏覽器)。cookie的使用是由瀏覽器按照一定的原則在後臺自動傳送給伺服器的。瀏覽器檢查所有儲存的cookie,如果某個cookie所宣告的作用範圍大於等於將要請求的資源所在的位置,則把該cookie附在請求資源的HTTP請求頭上傳送給伺服器。
cookie的內容主要包括:名字,值,過期時間,路徑和域。其中路徑與域一起構成cookie的作用範圍。若不設定過期時間,則表示這個cookie的生命期為瀏覽器會話期間,關閉瀏覽器視窗,cookie就消失

Session是另一種記錄客戶狀態的機制,不同的是Cookie儲存在客戶端瀏覽器中,而Session儲存在伺服器上。客戶端瀏覽器訪問伺服器的時候,伺服器把客戶端資訊以某種形式記錄
在伺服器上。這就是Session。客戶端瀏覽器再次訪問時只需要從該Session中查詢該客戶的狀態就可以了。
每個使用者訪問伺服器都會建立一個session,那伺服器是怎麼標識使用者的唯一身份呢?事實上,使用者與伺服器建立連線的同時,伺服器會自動為其分配一個SessionId
四、不同場景環境總結:
1、cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上。
2、cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙,考慮到安全應當使用session。
3、session會在一定時間內儲存在伺服器上。當訪問增多,會比較佔用你伺服器的效能,考慮到減輕伺服器效能方面,應當使用cookie。
4、單個cookie儲存的資料不能超過4K,很多瀏覽器都限制一個站點最多儲存20個cookie。
5、可以考慮將登陸資訊等重要資訊存放為session,其他資訊如果需要保留,可以放在cookie中。