具體來說 cookie 是保存在“客戶端”的,而session是保存在“服務端”的
cookie 是通過擴展http協議實現的
cookie 主要包括 :名字,值,過期時間,路徑和域;
如果cookie不設置生命周期,則以浏覽器關閉而關閉,這種cookie一般存儲在內存而不是硬盤上.若設置了生命周期則相反,不隨浏覽器的關閉而消失,這些cookie仍然有效直到超過設定的過 期 時間。
session 一種類似散列表的形式保存信息,
當程序需要為某個客戶端的請求創建一個session時,服務器首先檢查這個客戶端的請求裡是否已包含了一個session標識
(稱為session id),如果已包含則說明以前已經為此客戶端創建過session,服務器就按照session id把這個session檢索出來
使用(檢索不到,會新建一個),如果客戶端請求不包含session id,則為此客戶端創建一個session並且生成一個與此session相
關聯的session id,session id的值應該是一個既不會重復,又不容易被找到規律以仿造的字符串,這個session id將被在本次響應
中返回給客戶端保存。保存這個session id的方式可以采用cookie,這樣在交互過程中浏覽器可以自動的按照規則把這個標識發送給
服務器。一般這個cookie的名字都是類似於SEEESIONID。但cookie可以被人為的禁止,則必須有其他機制以便在cookie被禁止時
仍然能夠把session id傳遞回服務器。
優缺點:
1、cookie數據存放在客戶的浏覽器上,session數據放在服務器上。
2、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙
考慮到安全應當使用session。
3、session會在一定時間內保存在服務器上。當訪問增多,會比較占用你服務器的性能
考慮到減輕服務器性能方面,應當使用COOKIE。
4、單個cookie保存的數據不能超過4K,很多浏覽器都限制一個站點最多保存20個cookie。
5、所以個人建議:
將登陸信息等重要信息存放為SESSION
其他信息如果需要保留,可以放在COOKIE中