
資料內(nèi)容:
Session 和 Cookie ?區(qū)別主要有這些: 
MIC解析 
Hi,大家好,我是Mic,一個工作了14年的程序員和創(chuàng)業(yè)者。 
今天分享一道比較基礎(chǔ)的面試題。 
但是我可以保證很多人不一定回答得很好。 
具體問題是:Cookie和Session的區(qū)別。 
下面看看高手對這個問題的回答。 
高手
好的,面試官。 
我先解釋一下Cookie,它是客戶端瀏覽器用來保存服務(wù)端數(shù)據(jù)的一種機(jī)制。 
當(dāng)通過瀏覽器進(jìn)行網(wǎng)頁訪問的時候,服務(wù)器可以把某一些狀態(tài)數(shù)據(jù)以key-value的方式寫入到Cookie 
里面存儲到客戶端瀏覽器。 
然后客戶端下一次再訪問服務(wù)器的時候,就可以攜帶這些狀態(tài)數(shù)據(jù)發(fā)送到服務(wù)器端,服務(wù)端可以根據(jù) 
Cookie里面攜帶的內(nèi)容來識別使用者。 
Session表示一個會話,它是屬于服務(wù)器端的容器對象,默認(rèn)情況下,針對每一個瀏覽器的請求。 
Servlet容器都會分配一個Session。 
Session本質(zhì)上是一個ConcurrentHashMap,可以存儲當(dāng)前會話產(chǎn)生的一些狀態(tài)數(shù)據(jù)。 
我們都知道,Http協(xié)議本身是一個無狀態(tài)協(xié)議,也就是服務(wù)器并不知道客戶端發(fā)送過來的多次請求 
是屬于同一個用戶。 
所以Session是用來彌補(bǔ)Http無狀態(tài)的不足,簡單來說,服務(wù)器端可以利用session來存儲客戶端在 
同一個會話里面的多次請求記錄。 
基于服務(wù)端的session存儲機(jī)制,再結(jié)合客戶端的Cookie機(jī)制,就可以實現(xiàn)有狀態(tài)的Http協(xié)議。 
具體的工作原理是: 
客戶端第一次訪問服務(wù)端的時候,服務(wù)端會針對這次請求創(chuàng)建一個會話,并生成一個唯一的 
sessionId來標(biāo)注這個會話。 
然后服務(wù)端把這個sessionid寫入到客戶端瀏覽器的cookie里面,用來實現(xiàn)客戶端狀態(tài)的保存。 
在后續(xù)的請求里面,每次都會攜帶sessionid,服務(wù)器端就可以根據(jù)這個sessionid來識別當(dāng)前的會話 
狀態(tài)。
所以,總的來看,Cookie是客戶端的存儲機(jī)制,Session是服務(wù)端的存儲機(jī)制。 
這兩者結(jié)合使用,來實現(xiàn)會話狀態(tài)的存儲,以上就是我對這個問題的理解!
 
                