一,session:含義:有始有終的一系列動作\訊息
1, 隱含了「面向連線」 和「保持狀態」兩種含義
2, 一種用來在客戶端與伺服器之間保持狀態的解決方案
3, 也指這種解決方案的儲存結構「把××儲存在session裡」
二, http 協議本來是無狀態的,所以引進了cookie和session機制來保持連線狀態
cookie與session 機制之間的區別與聯絡:
cookie機制採用的是在客戶端保持狀態的方法
session機制採用的是在伺服器端保持狀態的方案,由於在伺服器端保 持狀態的同時必須要求客戶端提供乙個標識,
三,關於cookie機制
cookie 的使用是由瀏覽器按照一定的原則在後台自動傳送給伺服器的,瀏覽器會檢查
所有儲存的cookie,如果某個cookie所宣告的作用範圍大於等於將要請求的資源所在的位置,則把該cookie附在請求資源的http請求頭上傳送給伺服器。
儲存在硬碟上的cookie可以在不同的瀏覽器程序間共享,比如兩個ie視窗。而儲存在記憶體裡的cookie,不同的瀏覽器有不同的處理方式,對於ie,在乙個開啟的視窗上按ctrl+ n(從檔案選單)開啟的視窗可以與原視窗共享cookie,而使用其他方式新開的ie程序則不能共享已經開啟的視窗的記憶體cookie。
cookie的內容包括: 名字,值,過期時間,路徑和域
四,關於session的機制
當程式需要為某個客戶端的請求建立乙個session的時候,伺服器首先檢查這個請求是否含了乙個session 標識(session id),如果有,則說明以前為該客戶建立了乙個session,伺服器就按照session id把這個session檢索出來用,一般乙個cookie的名字就是類似於session id,如果cookie被禁止的時候(cookie可以被人為的禁止),經常使用重寫url的方式,把session id附加在url路徑後面,為了在整個互動過程中始終保持狀態,就必須在每個客戶端可能請求的路徑後面都包含這個session id。
人們以為:「把瀏覽器關閉了,session 就小時了」其實不對,除非程式通知伺服器刪除乙個session,否則伺服器會一直保留,而程式一般都是在使用者作log off的時候發個指令去刪除session。人們之所以會產生這種錯覺,是因為大部分session會採用cookie來儲存session,而關閉瀏覽器後這個session就消失了,如果伺服器設定的cookie被儲存到硬碟上,
或者使用某種手段改寫瀏覽器發出的http請求頭,把原來的session id傳送給伺服器,則再次開啟瀏覽器,其實是可以再次找到之前的session id的。所以設定失效時間可以起到一定的保護作用。
五,關於session的一些問題
1, session何時被建立: 不是在客戶端訪問時就被建立,而是在伺服器端呼叫httpservletrequest.getsession(true)時才被建立。
2, session何時被刪除:a,程式呼叫httpsession.invalidate(),b距離上一次收到客戶端傳送的session id時間間隔超過了session的超時設定 c,伺服器程序被停止(非持久session)
3, 如何做到關閉瀏覽器同時關閉session:嚴格說做不到,可以讓所有的客戶端頁面使用window.onclose來監視瀏覽器的關閉東西,然後向伺服器傳送乙個請求來刪除session,但是對於瀏覽器崩潰或者強行殺死程序時仍然無能為力。
cookie安全測試
cookie提供了一種在web應用程式中儲存使用者特定資訊的方法,例如儲存使用者的上次訪問時間等資訊。cookie其中乙個作用就是記錄使用者作業系統的日誌,而系統對cookie不單單是儲存,還有讀取,也就是說系統和使用者之間是乙個互動的過程,這稱為有狀態。cookie在帶來程式設計方便性的同時,也帶...
cookie學習筆記
cookie類的方法 public cookie string name,string value setvalue與getvalue方法 setmaxage與getmaxage方法 setpath與getpath方法 setdomain與getdomain方法 getname方法 1.建立cook...
cookie(學習筆記)
之前對於保持登入態這個問題,一直比較疑惑,自己也沒有實現過,看了這篇文章之後好像明白了什麼,聊一聊cookie 所以看完以後自己為了熟記,有了這篇學習筆記。cookie是瀏覽器提供的功能,可以儲存字串,cookie以網域名稱的方式區分的,每乙個網域名稱下最多可以有20個 實際不止 每個cookie大...