1. 程式人生 > >前端頁面——Cookie與Session有什麼區別

前端頁面——Cookie與Session有什麼區別

原文連結:http://blog.csdn.net/u010168160/article/details/47128443

我們在實際生活中總會遇到這樣的事情,我們一旦登入(首次輸入使用者名稱和密碼)某個網站之後,當我們再次訪問的時候(只要不關閉瀏覽器),無需再次登入。而當我們在這個網站瀏覽一段時間後,它會產生我們瀏覽的記錄,而且有的網站還提供購物車的功能。這些簡單實用的功能就是通過Cookie與Session實現的,接下來,讓我們一起探討一下它們是如何執行的。

1、概念

Cookie

有時也用其複數形式Cookies,指某些網站為了辨別使用者身份、進行session跟蹤而儲存在使用者本地終端上的資料

(通常經過加密)。

Session

Session直接翻譯成中文比較困難,一般都譯成時域。在計算機專業術語中,Session是指一個終端使用者與互動系統進行通訊的時間間隔,通常指從註冊進入系統到登出退出系統之間所經過的時間。以及如果需要的話,可能還有一定的操作空間。

具體到Web中的Session指的就是使用者在瀏覽某個網站時,從進入網站到關閉這個網站所經過的這段時間,也就是使用者瀏覽這個網站所花費的時間。因此從上述的定義中我們可以看到,Session實際上是一個特定的時間概念。

需要注意的是,一個Session的概念需要包括特定的客戶端,特定的伺服器端以及不中斷的操作時間。A使用者和C伺服器建立連線時所處的Session同B使用者和C伺服器建立連線時所處的Session是兩個不同的Session。

2、區別

1、cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上 
2、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行 
3、session會在一定時間內儲存在伺服器上。當訪問增多,會比較佔用你伺服器的效能 
4、單個cookie在客戶端的限制是3K,就是說一個站點在客戶端存放的COOKIE不能大於3K。

3執行機制

3.1、Cookie機制

在程式中,會話跟蹤是很重要的事情。理論上,一個使用者的所有請求操作都應該屬於同一個會話,而另一個使用者的所有請求操作則應該屬於另一個會話,二者不能混淆。例如,使用者A在超市購買的任何商品都應該放在A的購物車內,不論是使用者A什麼時間購買的,這都是屬於同一個會話的,不能放入使用者B或使用者C的購物車內,這不屬於同一個會話。

而Web應用程式是使用HTTP協議傳輸資料的。HTTP協議是無狀態的協議。一旦資料交換完畢,客戶端與伺服器端的連線就會關閉,再次交換資料需要建立新的連線。這就意味著伺服器無法從連線上跟蹤會話。即使用者A購買了一件商品放入購物車內,當再次購買商品時伺服器已經無法判斷該購買行為是屬於使用者A的會話還是使用者B的會話了。要跟蹤該會話,必須引入一種機制。

Cookie就是這樣的一種機制。它可以彌補HTTP協議無狀態的不足。在Session出現之前,基本上所有的網站都採用Cookie來跟蹤會話。

由於HTTP是一種無狀態的協議,伺服器單從網路連線上無從知道客戶身份。怎麼辦呢?就給客戶端們頒發一個通行證吧,每人一個,無論誰訪問都必須攜帶自己通行證。這樣伺服器就能從通行證上確認客戶身份了。這就是Cookie的工作原理。

Cookie實際上是一小段的文字資訊。客戶端請求伺服器,如果伺服器需要記錄該使用者狀態,就使用response向客戶端瀏覽器頒發一個Cookie。客戶端瀏覽器會把Cookie儲存起來。當瀏覽器再請求該網站時,瀏覽器把請求的網址連同該Cookie一同提交給伺服器。伺服器檢查該Cookie,以此來辨認使用者狀態。伺服器還可以根據需要修改Cookie的內容。

這裡寫圖片描述

3.2 Session機制

除了使用Cookie,Web應用程式中還經常使用Session來記錄客戶端狀態。Session是伺服器端使用的一種記錄客戶端狀態的機制,使用上比Cookie簡單一些,相應的也增加了伺服器的儲存壓力。

客戶端瀏覽器訪問伺服器的時候,伺服器把客戶端資訊以某種形式記錄在伺服器上。這就是Session。客戶端瀏覽器再次訪問時只需要從該Session中查詢該客戶的狀態就可以了。

如果說Cookie機制是通過檢查客戶身上的“通行證”來確定客戶身份的話,那麼Session機制就是通過檢查伺服器上的“客戶明細表”來確認客戶身份。Session相當於程式在伺服器上建立的一份客戶檔案,客戶來訪的時候只需要查詢客戶檔案表就可以了。

如下圖所示,張三和李四分別訪問該網站,在服務端會產生兩個SessionID來區分該使用者,而在客戶端將對應的SessionID存放在Cookie中,以便我們再次訪問時得到我們所需的資源。

這裡寫圖片描述

4總結

這裡,我們將cookie跟session簡單介紹了一下,至於實際應用還需要我們在做專案中慢慢體會,例如,如何控制他們的生命週期,有效期等等。而且session和cookie是我們必須要掌握的技術,因為我們要經常使用它來進行訊息的傳遞與驗證,而且它們還應用在許可權控制,單點登入等技術。不管怎麼說,我們都應該重視這種簡單常用的小技能。