HTTP協議之Cookie

HTTP協議之Cookie

  • 使用Cookie的原因
  • Cookie的定義
  • 客戶端和服務器的Cookie
  • 客戶端發送請求報文的Cookie
  • 服務器端響應報文的set-cookie
  • Cookie的通信

使用Cookie的原因

因為HTTP協議是無連接無狀態的協議,這雖然帶來了速度上的提升和結構上的簡潔,但是有許多應用場景需要進行有狀態的連接,比如我在一個網站上登錄了,點擊一個本站鏈接,跳轉到詳情的頁面,這時,用戶肯定希望保持登錄的狀態,因此,我們需要引入 Cookie 來為HTTP協議添加狀態管理功能。

Cookie的定義

Cookie是指在HTTP協議下,服務器或腳本可以維護客戶端計算機上信息的一種方式。通俗地說,Cookie是一種能夠讓網站Web服務器把少量數據儲存到客戶端的硬盤或內存里,或是從客戶端的硬盤里讀取數據的一種技術。Cookie文件記錄了用戶的有關信息,如身份識別號碼ID、密碼、瀏覽過的網頁、停留的時間、用戶在Web站點購物的方式或用戶訪問該站點的次數等,當用戶再次鏈接Web服務器時,瀏覽器讀取Cookie信息并傳遞給Web站點。

客戶端和服務器的Cookie

** 客戶端發送請求報文的Cookie**
??如果客戶端沒有Cookie時,在其請求報文中不會有Cookie字段,若已經有Cookie,再訪問對應網站時,瀏覽器會檢索是否有Cookie與此網站對應,若對應,則服務器可讀取次Cookie記錄的信息。??請求報文中的Cookie字段只有:
Cookie:status = enable(disable)

服務器端響應報文的set-cookie
??服務器若發現請求報文中沒有Cookie字段,則會在response報文中加入 Set-Cookie 字段,格式為:
Set-Cookie: NAME = VALUE; expires = DATE; path = PATH; domain = www.xxx.com; Secure; HttpOnly

上面的全大寫變量為自定義變量,我們需要定義Cookie的名稱,并對其賦值,若是多鍵值對的情況,格式為NAME = KEY1 = VALUE1 & KEY2 = VALUE2;expires為Cookie失效的時間,默認為關閉瀏覽器后清理;path為服務器定義的Cookie存儲路徑;domain為網站的域,若www.baidu.com,他的域應該為baidu.com/*,即主頁及其次級目錄;Secure若出現,意味著僅在https通信時發 送Cookie;HttpOnly若出現,意味著只能在HTTP協議中訪問Cookie,不能在Javascript中訪問Cookie。

Cookie的通信

Cookie通信

??如圖所示,這是一個標準的Cookie通信過程。沒有Cookie的客戶端對服務器發起請求,服務器發現請求報文首部中沒有Cookie字段,就在response報文中加入Set-Cookie字段,客戶端接收到之后,在本地生成Cookie,并在再次發生http訪問時,在request報文中加入Cookie字段,于是服務器就會知道用戶的一些信息,用來進行個性化和定制化的操作。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容