Python知識(shí)分享網(wǎng) - 專業(yè)的Python學(xué)習(xí)網(wǎng)站 學(xué)Python,上Python222
50w字Java程序員面試寶典 PDF 下載
發(fā)布于:2023-10-29 11:02:44
(假如點(diǎn)擊沒反應(yīng),多刷新兩次就OK!)

50w字Java程序員面試寶典 PDF 下載 圖1

 

 

 

 

資料內(nèi)容:

 

 

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