和我一塊兒學《HTTP權威指南》——客戶端識別與cookie機制

客戶端識別與cookie機制

服務器須要區別是哪一個客戶端。數據庫

個性化接觸

HTTP是匿名、無狀態的請求/響應協議。瀏覽器

Web站點但願:安全

  • 對客戶端的用戶有更多的瞭解
  • 追蹤用戶瀏覽頁面的行爲

所以,產生了幾種用戶識別機制:服務器

  • 包含用戶身份信息的HTTP首部
  • 識別用戶IP地址
  • 用戶認證
  • URL中嵌入識別信息

HTTP首部

User-Agent首部將用戶所用瀏覽器的相關信息告知服務器。cookie

下圖是Chrome瀏覽器開發者工具,打開http://www.cnblogs.com的部分截圖工具

Referer表示從哪一個頁面跳轉過來的,上面的例子是從個人博客跳轉過來的網站

User-Agent表示客戶端瀏覽器的一些信息,上例中Mozilla/5.0表示應用的名稱和版本,AppleWebKit...表示使用的瀏覽器平臺相關信息url

客戶端IP地址

使用IP地址識別用戶缺點太多代理

  • IP地址只能描述機器,而不是用戶。沒法區分多用戶
  • ISP爲用戶動態分配IP地址
  • 用戶經過NAT防火牆瀏覽網頁。NAT隱藏客戶端IP地址,將IP地址轉換成一個共享防火牆的IP地址
  • 服務器看到的多是代理服務器的IP地址

用戶登陸

經過用戶名和密碼進行認證顯式地詢問用戶身份code

HTTP中用WWW-Authenticate首部Authorization首部傳送用戶相關信息

胖URL

有些Web站點爲每一個用戶生成特定版本的URL來追蹤用戶的身份。

cookie是當前識別用戶,實現持久會話的最好方式

cookie的類型

  • 會話cookie:臨時cookie,記錄用戶的設置和偏好,退出瀏覽器就會被刪除
  • 持久cookie:生存時間長一些,存儲在硬盤上,用戶退出瀏覽器,重啓計算機仍存在

二者的區別就是過時時間

cookie是如何工做的

cookie就像服務器給用戶貼的辨別身份的貼紙同樣

用戶訪問網站,Web站點讀取Cookie(服務器貼在用戶身上的全部貼紙)

瀏覽器記住服務器返回的Set-Cookie首部的cookie內容,將cookie存儲在瀏覽器的cookie數據庫中。下次訪問相同站點,瀏覽器在cookie請求首部將它傳過去。

cookie罐:客戶端的狀態

cookie的基本思想:讓瀏覽器積累一組服務器特有的信息,每次訪問服務器都將這些信息提供給它。

cookie規範的正式名稱:HTTP狀態管理機制(HTTP state management mechanism)

對應HTTP是無狀態協議,由cookie來保持HTTP的狀態

Chrome瀏覽器查看cookie的兩種方式:

  • 查看當前網站的cookie

經過查看維基百科的cookie詞條的cookie,咱們能看出當前網站有兩種cookie,會話cookie和持久cookie

  • 查看瀏覽器全部的cookie

cookie與會話追蹤

可用cookie在用戶與某個站點進行多項事務處理時對用戶進行追蹤。

cookie的缺點

  • cookie會被附加到每一個HTTP請求中,增長了流量
  • HTTP請求中的cookie是明文傳輸,有安全性問題(除非使用HTTPS)
  • cookie有大小限制,對複雜的存儲需求不夠使用

cookie的用途

維持用戶和服務器的會話狀態

  • 購物網站購物車對用戶選購商品的記錄
  • 用戶在登陸一次後,下次登陸不須要再輸入用戶名和密碼(在cookie還沒過時前)
相關文章
相關標籤/搜索