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