Cookie以及Session的定義以及區別

Cookie以及Session的定義:
Cookie:cookie 機制採用的是在客戶端保持狀態的方案。
Session:session 機制採用的是在服務器端保持狀態的方案。
cookie 機制:正統的 cookie 分發是通過擴展 HTTP 協議來實現的,服務器通過在 HTTP的響應頭中加上一行特殊的指示以提示瀏覽器按照指示生成相應的 cookie。然而純粹的客戶端腳本如 JavaScript 或者 VBScript 也可以生成 cookie。而 cookie 的使用是由瀏覽器按照一定的原則在後臺自動發送給服務器的。瀏覽器檢查所有存儲的 cookie,如果某個 cookie 所聲明的作用範圍大於等於將要請求的資源所在的位置,則把該 cookie 附在請求資源的 HTTP請求頭上發送給服務器。
        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 將被在本次響應中返回給客戶端保存。保存這個 sessionid 的方式可以採用 cookie,這樣在交互過程中瀏覽器可以自動的按照規則把這個標識發送給服務器。一般這個 cookie 的名字都是類似於 SEEESIONID。但 cookie 可以被人爲的禁止,則必須有其他機制以便在 cookie 被禁止時仍然能夠把 session id 傳遞迴服務器。經常被使用的一種技術叫做 URL 重寫,就是把 session id 直接附加在 URL 路徑後面。還有一種技術叫做表單隱藏字段。就是服務器會自動修改表單,添加一個隱藏字段,以便在表單提交時能夠把 session id 傳遞迴服務器。

cookie 和 session 的區別:
1、cookie 數據存放在客戶的瀏覽器上,session 數據放在服務器上。
2、cookie 不是很安全,別人可以分析存放在本地的 cookie 並進行 cookie欺騙, 考
慮到安全應當使用 session。
3、session 會在一定時間內保存在服務器上。當訪問增多,會比較佔用你服務器的性能,
考慮到減輕服務器性能方面,應當使用 cookie。
4、單個 cookie 保存的數據不能超過 4K,很多瀏覽器都限制一個站點最多保存 20 個
cookie。
5、所以個人建議:
將登陸信息等重要信息存放爲 session。
其他信息如果需要保留,可以放在 cookie 中。

Session採用的是在服務器端保持狀態的方案,而Cookie採用的是在客戶端保持狀態的方案。但是禁用Cookie就不能得到Session。因爲Session是用Session ID來確定當前對話所對應的服務器Session,而Session ID是通過Cookie來傳遞的,禁用Cookie相當於禁用SessionID,也就得不到Session。

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