cookie與session的區別

 cookies“Cookie是Web服務器保存在用戶硬盤上的一段文本。Cookie允許一個Web站點在用戶的電腦上保存信息並且隨後再取回它。信息的片斷以‘名/值’對(name-valuepairs)的形式儲存。” 舉例來說,一個Web站點可能會爲每一個訪問者產生一個唯一的ID,然後以Cookie文件的形式保存在每個用戶的機器上。 在這個文件夾裏的每個Cookie文件都是一個簡單而又普通的文本文件。透過文件名,您可以看到是哪個Web站點在您的機器上放置了Cookie(當然站點信息在文件裏也有保存)。您也能雙擊打開每一個Cookie文件。 比如,我訪問了goto.com,而且這個站點在我的電腦上放了個Cookie。goto.com的Cookie文件包含了這樣的內容: session:session是每個服務器爲客戶端分配的一個標識,用以標識這個用戶的唯一身份。然後再通過session的有效性進行各種的客戶端與服務器進行會話(交互)最大的區別Session是存在服務器端的;而Cookie是存在客戶端的!!

Cookie和Session有很多相似的地方,都是用來臨時存儲來訪者信息,有很多情況下,使用兩者都可以實現某些特定功能,而兩者的根本區別是Cookie對象將信息存放在客戶端,Session對象存放在服務器端;從生存期上講,Cookie可以長期保存,而Session的生存期僅僅到會話結束;
    在ASP.NET中,網站設計者可以選擇Session的存儲位置,可以存儲在服務器端的內存中,也可以存放在SQL Server數據庫中,若要保存到數據庫中需要在Config.web文件中指明數據庫的位置;還可以將Session保存在狀態服務器中,狀態服務器可以單獨地存放Session對象的內容,即使ASP.NET服務器進程失敗,狀態服務器也可以保存Session信息.默認模式是存放在服務器端內存中.但大量的數據會增加服務器的負荷.
    Cookie保存在客戶端,用戶可以看到Cookie文件,並能對Cookie文件進行類似修改、刪除的操作,Cookie數據的安全性很難得到保障;而Session數據保存在服務器端,有較好的安全性,若和數據庫配合使用,可以使Session數據長期保持,並得到很好的安全性. 

 

cookie的內容主要包括:名字,值,過期時間,路徑和域。路徑與域一起構成cookie的作用範圍。若不設置過期時間,則表示這

個cookie的生命期爲瀏覽器會話期間,關閉瀏覽器窗口,cookie就消失。這種生命期爲瀏覽器會話期的cookie被稱爲會話cookie。

會話cookie一般不存儲在硬盤上而是保存在內存裏,當然這種行爲並不是規範規定的。若設置了過期時間,瀏覽器就會把cookie

保存到硬盤上,關閉後再次打開瀏覽器,這些cookie仍然有效直到超過設定的過期時間。存儲在硬盤上的cookie可以在不同的瀏

覽器進程間共享,比如兩個IE窗口。而對於保存在內存裏的cookie,不同的瀏覽器有不同的處理方式

session機制。session機制是一種服務器端的機制,服務器使用一種類似於散列表的結構(也可能就是使用散列表)來保存信息。

          當程序需要爲某個客戶端的請求創建一個session時,服務器首先檢查這個客戶端的請求裏是否已包含了一個session標識

(稱爲session id),如果已包含則說明以前已經爲此客戶端創建過session,服務器就按照session id把這個session檢索出來

使用(檢索不到,會新建一個),如果客戶端請求不包含session id,則爲此客戶端創建一個session並且生成一個與此session相

關聯的session id,session id的值應該是一個既不會重複,又不容易被找到規律以仿造的字符串,這個session id將被在本次響應

中返回給客戶端保存。保存這個session id的方式可以採用cookie,這樣在交互過程中瀏覽器可以自動的按照規則把這個標識發送給

服務器。一般這個cookie的名字都是類似於SEEESIONID。但cookie可以被人爲的禁止,則必須有其他機制以便在cookie被禁止時

仍然能夠把session id傳遞迴服務器。

 

發佈了59 篇原創文章 · 獲贊 4 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章