#### 1. 前言 --- cookie 和 session 的區(qū)別是什么?這個(gè)問(wèn)題在面試中問(wèn)到的頻率非常高 cookie 和 session 的共同點(diǎn): 都是用來(lái)記錄用戶訪問(wèn)瀏覽器時(shí)保存的數(shù)據(jù),比如:用戶的身份信息等 #### 2. cookie 和 session 的工作原理 --- cookie 工作原理: 瀏覽器端第一次發(fā)送請(qǐng)求到服務(wù)端,服務(wù)器端創(chuàng)建 cookie,該 cookie 中包含用戶的信息,然后將該 cookie 發(fā)送到瀏覽器端。瀏覽器端再次訪問(wèn)服務(wù)器端時(shí)會(huì)攜帶上服務(wù)器端創(chuàng)建的這個(gè) cookie,服務(wù)器端通過(guò) cookie 中攜帶的數(shù)據(jù)區(qū)分不同的用戶 session 工作原理: 瀏覽器端第一次請(qǐng)求到服務(wù)端時(shí),服務(wù)器端會(huì)創(chuàng)建一個(gè) session,同時(shí)創(chuàng)建一個(gè)特殊的 cookie,這個(gè) cookie 的值就是 session_id,服務(wù)器端將這個(gè) cookie 發(fā)送到瀏覽器端。當(dāng)瀏覽器端再次請(qǐng)求服務(wù)器端時(shí),瀏覽器端會(huì)攜帶上這個(gè) cookie,服務(wù)器端會(huì)很根據(jù)這個(gè) cookie 值,也就是 session_id,去查詢 session 數(shù)據(jù),從而區(qū)分不同用戶 #### 3. cookie 和 session 的區(qū)別總結(jié) ---- cookie 數(shù)據(jù)存放在瀏覽器端,session 數(shù)據(jù)存放在服務(wù)器端,但是 session_id 存放在瀏覽器端 1\. 安全性 因?yàn)?cookie 數(shù)據(jù)存放在瀏覽器端,所以 cookie 沒有 session 安全,別人可以分析存放在本地的 cookie 并進(jìn)行 cookie 欺騙,考慮到安全性建議使用 session 2\. session 會(huì)占用服務(wù)器性能 session 會(huì)在一定時(shí)間內(nèi)保存在服務(wù)器上,當(dāng)訪問(wèn)增多時(shí)會(huì)比較占用服務(wù)器的性能,考慮到減輕服務(wù)器性能耗損,應(yīng)當(dāng)使用一些 cookie 3\. cookie 保存的數(shù)據(jù)受限 單個(gè) cookie 保存的數(shù)據(jù)不超過(guò) 4k,而 session 則存儲(chǔ)在服務(wù)器端,可以保存更多復(fù)雜的數(shù)據(jù)類型 #### 4. 當(dāng)禁用 cookie 后,session 還能使用嗎? ---- 當(dāng)我們了解過(guò) session 的工作原理后,可以得知,使用 session 的過(guò)程中,session_id 是存放在瀏覽器端的 cookie 中的,所以,當(dāng)我們禁用 cookie 后,session 是不能正常使用的 那么問(wèn)題來(lái)了,禁用了 cookie,還想要正常使用 session,應(yīng)該怎么做呢? 禁用 cookie 后,session 不能正常使用的原因是 cookie 中的 session_id 無(wú)法發(fā)送到服務(wù)器端;所以,只要將 session_id 想辦法傳遞給服務(wù)器端即可。方法有很多,比如最常見的: URL 傳參