天天看點

不清不楚的 Session 和 Cookie

會話(Session)跟蹤是Web程式中常用的技術,用來跟蹤使用者的整個會話。常用的會話跟蹤技術是Cookie與Session。Cookie通過在用戶端記錄資訊确定使用者身份,Session通過在伺服器端記錄資訊确定使用者身份。

Cookie機制

Cookie技術是用戶端的解決方案,Cookie就是由伺服器發給用戶端的特殊資訊,而這些資訊以文本檔案的方式存放在用戶端,然後用戶端每次向伺服器發送請求的時候都會帶上這些特殊的資訊。

用戶端發送一個http請求到伺服器端 伺服器端發送一個http響應到用戶端,其中包含Set-Cookie頭部 用戶端發送一個http請求到伺服器端,其中包含Cookie頭部 伺服器端發送一個http響應到用戶端

Session機制

除了使用Cookie,Web應用程式中還經常使用Session來記錄用戶端狀态。Session是伺服器端使用的一種記錄用戶端狀态的機制,使用上比Cookie簡單一些,相應的也增加了伺服器的存儲壓力。Session技術是服務端的解決方案,它是通過伺服器來保持狀态的。

什麼是Cookie

Cookie意為“甜餅”,是由W3C組織提出,最早由Netscape社群發展的一種機制。目前Cookie已經成為标準,所有的主流浏覽器如IE、Netscape、Firefox、Opera等都支援Cookie。
由于HTTP是一種無狀态的協定,伺服器單從網絡連接配接上無從知道客戶身份。怎麼辦呢?就給用戶端們頒發一個通行證吧,每人一個,無論誰通路都必須攜帶自己通行證。這樣伺服器就能從通行證上确認客戶身份了。這就是Cookie的工作原理。
Cookie實際上是一小段的文本資訊。用戶端請求伺服器,如果伺服器需要記錄該使用者狀态,就使用response向用戶端浏覽器頒發一個Cookie。用戶端浏覽器會把Cookie儲存起來。當浏覽器再請求該網站時,浏覽器把請求的網址連同該Cookie一同送出給伺服器。伺服器檢查該Cookie,以此來辨認使用者狀态。伺服器還可以根據需要修改Cookie的内容。

什麼是Session

Session是另一種記錄客戶狀态的機制,不同的是Cookie儲存在用戶端浏覽器中,而Session儲存在伺服器上。用戶端浏覽器通路伺服器的時候,伺服器把用戶端資訊以某種形式記錄在伺服器上。這就是Session。用戶端浏覽器再次通路時隻需要從該Session中查找該客戶的狀态就可以了。
如果說Cookie機制是通過檢查客戶身上的“通行證”來确定客戶身份的話,那麼Session機制就是通過檢查伺服器上的“客戶明細表”來确認客戶身份。Session相當于程式在伺服器上建立的一份客戶檔案,客戶來訪的時候隻需要查詢客戶檔案表就可以了。

Cookie與Session的差別

一 、cookie資料存放在客戶的浏覽器上,session資料放在伺服器上;

二 、cookie不是很安全,别人可以分析存放在本地的COOKIE并進行COOKIE欺騙,考慮到安全應當使用session;

三 、session會在一定時間内儲存在伺服器上。當通路增多,會比較占用你伺服器的性能。考慮到減輕伺服器性能方面,應當使用COOKIE;

四 、單個cookie在用戶端的限制是3K,就是說一個站點在用戶端存放的COOKIE不能超過3K;

Cookie和Session的方案雖然分别屬于用戶端和服務端,但是服務端的session的實作對用戶端的cookie有依賴關系的,上面我講到服務端執行session機制時候會生成session的id值,這個id值會發送給用戶端,用戶端每次請求都會把這個id值放到http請求的頭部發送給服務端,而這個id值在用戶端會儲存下來,儲存的容器就是cookie,是以當我們完全禁掉浏覽器的cookie的時候,服務端的session也會不能正常使用

摘自:

http://my.oschina.net/xianggao/blog/395675#OSC_h2_1

繼續閱讀