cookie和Session產生的背景及使用(上)


前言

  WEB應用程序使用HTTP協議通信,而HTTP協議是"無狀態"協議,即服務器一旦響應完客戶的請求之后,就斷開連接,而同一個客戶的下一次請求將重新建立網絡連接,服務器應用程序有時是需要判斷是否為同一個客戶發出的請求,比如客戶的多次選購商品,,因此,有必要跟蹤同一個客戶發出的請求

狀態管理

  將客戶端(瀏覽器)與服務器之間多次交互(一次請求,一次響應)當做一個整體來看待,並且將多次交互所涉及的數據即狀態保存下來              狀態指的是數據                  管理指得是多次交互時對數據的修改

由此產生了兩種狀態管理的常見模式

  客戶端狀態管理技術:      將狀態保存在客戶端,.代表性的是Cookie技術

       服務器端狀態管理技術:   將狀態保存在服務器端,代表性的是Session技術

什么是cookie

  因為http協議是一種無狀態協議,,服務器一旦響應完客戶端的請求后就會斷開連接,同一個客戶的下一次請求將重新建立網絡連接,而服務器應用程序有時候是需要判斷是否為同一個客戶發出的請求,,這時候就需要將客戶端與服務端之間的交互當做整體記錄下來進行管理

  具體:

      瀏覽器向WEB服務器發送請求時,服務器會將少量的數據以set_Cookie消息頭的方式發送給瀏覽器,瀏覽器將這些數據保存下來;

客戶端發送請求:

服務端處理:

 key只能自己定義用來區分不同的Cookie的名字

       

      當瀏覽器再次訪問服務器時,會將這些數據以Cookie消息頭的方式發送給服務器

 服務器的處理

 

 修改Cookie

  

Cookie的生存空間

  默認情況下,瀏覽器會將Cookie保存在內存中,只要瀏覽器不關閉,Cookie就一直存在

 

 如果希望關閉瀏覽器后Cookie仍在,可以通過設置過期時間

  void Cookie.setMaxAge(int seconds);     注seconds單位是秒,精度不是很高

Cookie的生存時間

  seconds>0:

        瀏覽器要保存Cookie的最長時間為設置的參數值,如果超過指定的時間,瀏覽器會刪除這個Cookie.此時Cookie保存早硬盤上.

  seconds=0:

        刪除Cookie,在修改Cookie的生存時間為0后,隨着response發送回客戶端,替換原有Cookie,因生命周期到了即將該Cookie刪除

      seconds<0:

        缺省值,瀏覽器會將Cookie保存到內存中

 Cookie編碼

      

Cookie解碼

Cookie的路徑

發送Cookie的條件

可以修改Cookie的路徑

 

Cookie的限制

 


免責聲明!

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



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