Cookie和會話狀態session的工作原理

 解讀session

session是一種保存上下文信息的機制,它是針對每一個用戶的,變量的值保存在服務器端,通過SessionID來區分不同的客戶,session是以Cookie或URL重寫爲基礎。默認使用Cookie來實現,系統會創造一個名爲JSESSIONID的輸出Cookie,或稱爲"Session Cookie",以區別Persistent Cookies(通常所說的Cookie).Session Cookie是存儲在瀏覽器中,並不是寫在硬盤上的,但是把瀏覽器的Cookie禁止後,使用response對象的encodeURL或encodeRedirectURL方法編碼URL,WEB服務器會採URL重寫的方式傳遞Sessionid,用戶就可以在地址欄看到jsessionid=A09JHGHKHU68624309UTY84932之類的字符串。
 
通常Session Cookie是不能跨窗口使用,當用戶新開了一個瀏覽器進入相同的頁面時,系統會賦予用戶一個新的SessionID,這樣信息共享的目的就達不到,此時可以把SessionID保存在Persistent Cookie中,然後再新的窗口中讀出來,就可以得到上一個窗口的SessionID了,這樣通過Session Cookie和Persistent Cookie的結合,實現了跨窗口的會話跟蹤。

session的工作原理
就session的實現而言,好像是這樣的:
(1)當有Session啓動時,服務器生成一個唯一值,稱爲SessionID(好像是通過取進程ID的方式取得的)。
(2)然後,服務器開闢一塊內存,對應於該SessionID。
(3)服務器再將該SessionID寫入瀏覽器的cookie(一些在網頁的源代碼中有所體現)。
(4)服務器內有一進程,監視所有Session的活動狀況,如果有Session超時或是主動關閉,服務器就釋放該內存塊。
(5)當瀏覽器連入IIS(服務器)時並請求的ASP(腳本語言)內用到Session時,IIS(服務器)就讀瀏覽器Cookie中的SessionID。
(6)然後,服務檢查該SessionID所對應的內存是否有效。
(7)如果有效,就讀出內存中的值。
(8)如果無效,就建立新的Session。

注意:
(1)在大瀏覽量的網站,Session並不保險,我們過去的網站就經常碰到存在Session中得值不正確(可能出現重複的Session ID)。
(2)Session ID不能從硬盤上的Cookie文件獲得,如果想在客戶端獲知自己的Session ID,只能通過JavaScript來讀取。

 

Cookie和會話狀態
做BS開發,這兩個概念必不可少,先來個大概瞭解,沒有實際應用很難深入,深入看參考地址!
什麼是 Cookie?
Cookie 是一小段文本信息,伴隨着用戶請求和頁面在 Web 服務器和瀏覽器之間傳遞。用戶每次訪問站點時,Web 應用程序都可以讀取 Cookie 包含的信息。 Cookie 的基本工作原理如果用戶再次訪問站點上的頁面,當該用戶輸入 URL
www.****.com 時,瀏覽器就會在本地硬盤上查找與該 URL 相關聯的 Cookie。如果該 Cookie 存在,瀏覽器就將它與頁面請求一起發送到您的站點。

Cookie 有哪些用途?
最根本的用途是:Cookie 能夠幫助 Web 站點保存有關訪問者的信息。更概括地說,Cookie 是一種保持Web 應用程序連續性(即執行“狀態管理”)的方法.使 Web 站點記住您.

什麼是會話Session?
當用戶訪問您的站點時,服務器會爲該用戶創建唯一的會話,會話將一直延續到用戶訪問結束。


參考地址
http://www.microsoft.com/china/MSDN/library/archives/library/dv_vstechart/html/vbtchaspnetcookies101.asp
http://support.microsoft.com/default.aspx?scid=kb;en-us;307598

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章