通識的來說,session是服務(wù)端用來標(biāo)識一個用戶的攒驰,記錄在服務(wù)端蟆湖;cookie是客戶端用來標(biāo)識一個用戶的玻粪,記錄在客戶端所在設(shè)備的內(nèi)存中或者緩存中
服務(wù)器端對一個用戶的記錄編號就是session id,這個機(jī)制就是session劲室,因?yàn)閔ttp的請求是無狀態(tài)的一種數(shù)據(jù)通訊,所以每一次訪問服務(wù)端就和上一次訪問時沒有關(guān)系的充蓝,盡管操作瀏覽器的是同一個人,服務(wù)器端也無法識別是不是一個用戶的請求谓苟,為了解決無狀態(tài)標(biāo)識的http請求,還是需要在協(xié)議層基礎(chǔ)上對其進(jìn)行擴(kuò)展娜谊,擴(kuò)展的形式就是session機(jī)制
后臺服務(wù)器端對瀏覽器分發(fā)一個cookie,瀏覽器會存在設(shè)備緩存中湾趾,同事在后端服務(wù)器中也記錄下這個值派草,叫session id搀缠,瀏覽器中的cookie id就==服務(wù)器端的session id值近迁,
一個未登錄用戶訪問了購物網(wǎng)站,這個時候鉴竭,購物網(wǎng)站的服務(wù)器端給這個用戶分配了一個cookie通過對瀏覽器的響應(yīng)送還給瀏覽器,瀏覽器會調(diào)用設(shè)備接口瑰步,將這個cookie信息進(jìn)行本地存儲璧眠,與此同時,在服務(wù)器端也記錄了一個session id 和這個cookie的值一樣责静,當(dāng)這個用戶在不同時段來到購物網(wǎng)站進(jìn)行添加購物車,每一次添加的前端交互都會請求后端灾螃,請求的時候回帶著cookie信息,后端會按照這個cookie信息尋找后端的session id藐握,并把同一個 cookid的購物都存在一起垃喊,服務(wù)端每一次返回購物車信息給前端的時候都會把這個cookie id 下的商品都一并返回給前端,這樣對于用戶來說就幾遍沒有登錄本谜,也能看到購物車的所有情況
有的時候要避免聰明用戶禁用cookie偎窘,后端會在url上最后增加sid=12345的形式來維持這種前后端定義唯一用戶的機(jī)制