session與cookie的區別? 如果客戶端禁止 cookie session 還能用嗎?


一、session與cookie的區別

session:Session 是存放在服務器端的,類似於Session結構來存放用戶數據,當瀏覽器 第一次發送請求時,服務器自動生成了一個Session和一個Session ID用來唯一標識這個Session,並將其通過響應發送到瀏覽器。當瀏覽器第二次發送請求,會將前一次服務器響應中的Session ID放在請求中一並發送到服務器上,服務器從請求中提取出Session ID,並和保存的所有Session ID進行對比,找到這個用戶對應的Session。由於Session存放在服務器端,所以隨着時間的推移或者用戶訪問的增多,會給服務器增加負擔。使用的時候要考慮下服務器的性能。

cookie:Cookie實際上是一小段的文本信息。客戶端請求服務器,如果服務器需要記錄該用戶狀態,就使用response向客戶端瀏覽器頒發一個Cookie。客戶端會把Cookie保存起來。由於Cookie是存放在客戶端,是可見的,安全性就會很低。因此不建議將一些重要的信息放在cookie中。

區別:

  1. cookie存放在客戶端,session存放在服務器端
  2. cookie不是很安全,別人可以分析你本地的cookie信息進行cookie欺騙,因此重要信息應考慮保存在服務器端
  3. session一定時間內回報存在服務器端,當訪問量增大時,會影響服務器性能,從性能方面考慮應使用cookie
  4. 不同瀏覽器對cookie的數據大小限制不同,個數限制也不同
  5. 可以考慮將登陸信息等重要信息存放為session,不重要的信息可以放在cookie中

聯系:

  1. 都是用來記錄用戶的信息,以便讓服務器分辨不同的用戶
  2. 可以搭配使用,但都有自己的使用局限,要考慮到安全和性能的問題

二、如果客戶端禁止 cookie,session 還能用嗎?

  如果瀏覽器禁止cookie,那么客戶端訪問服務端時無法攜帶sessionid,服務端無法識別用戶身份,便無法進行會話控制,session失效。但可以通過以下幾種方法:

  1. URL重寫:URL重寫要求將站點中的所有超鏈接都進行改造,在超鏈接后用一個特殊的參數JSESSIONID保存當前瀏覽器對應session的編號,這樣一來,當用戶點擊超鏈接訪問服務器時,服務器可以從URL后的參數中分析出JSESSIONID,從而找到對應的sesison使用.
  2. 用文件、數據庫等形式保存Session ID,在跨頁過程中手動調用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM