Cookie和會話狀態的 工做 原理及Cookie欺騙 瀏覽器
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。 cookie
注意:
(1)在大瀏覽量的網站,Session並不保險,咱們過去的網站就常常碰到存在Session中得值不正確(可能出現重複的Session ID)。
(2)Session ID不能從硬盤上的Cookie文件得到,若是想在客戶端獲知本身的Session ID,只能經過Javascrīpt來讀取。 session
Cookie和會話狀態
作BS開發,這兩個概念必不可少,先來個大概瞭解,沒有實際應用很難深刻,深刻看參考地址!
什麼是 Cookie?
Cookie 是一小段文本信息,伴隨着用戶請求和頁面在 Web 服務器和瀏覽器之間傳遞。用戶每次訪問站點時,Web 應用程序均可以讀取 Cookie 包含的信息。 Cookie 的基本工做原理若是用戶再次訪問站點上的頁面,當該用戶輸入 URLwww.*****.com時,瀏覽器就會在本地硬盤上查找與該 URL 相關聯的 Cookie。若是該 Cookie 存在,瀏覽器就將它與頁面請求一塊兒發送到您的站點。 網站
Cookie 有哪些用途?
最根本的用途是:Cookie 可以幫助 Web 站點保存有關訪問者的信息。更歸納地說,Cookie 是一種保持Web 應用程序連續性(即執行「狀態管理」)的方法.使 Web 站點記住您. 編碼
什麼是會話Session?
當用戶訪問您的站點時,服務器會爲該用戶建立惟一的會話,會話將一直延續到用戶訪問結束。 spa