cookie和session

cookie篇

cookie是客戶端本地存儲的一種方式,常見的客戶端本地存儲的方式還有:session storage、local storage和indexDB。cookie有兩種,一種儲存在瀏覽器進程中,另一種儲存在硬盤中。sessionId儲存在第一種cookie中,所以當瀏覽器關閉就等于銷毀了這個sessionId。

cookie的用途

cookie是一小段文本信息,伴隨著用戶請求在 Web 服務器和瀏覽器之間傳遞。cookie存儲在計算機本地中,可以跨越一個域名下的多個網頁,但不能跨越多個域名使用。保存用戶登錄信息、保存購物信息是cookie常見的用途。

cookie的原理

用戶每次訪問頁面瀏覽器都先搜索本地是否有與這個域名相關聯的cookie,有的話便添加到request header的Cookie字段中,與http請求一起發送到該站點。

cookie的內容

在瀏覽器開發者模式resource下可觀察cookie,其內容有:name/value、domain、Path、Expires/Max-age、httpOnly、Secure。各名值對之間需有分號+空格隔開。其中httpOnly屬性只能在服務器設置、httpOnly和secure是非名值對屬性。例子如下:

document.cookie = "test=myCookie; domain=.google.com.hk; expires=Sat, 04 Nov 2017 16:00:00 GMT; secure"
cookie的設置

可以從客戶端或者服務端設置cookie:

//客戶端:
document.cookie = "name=value[; expires=GMTDate][; domain=domain][; path=path][; secure]"
//服務端:
Set-Cookie: name=value[; expires=GMTDate][; domain=domain][; path=path][; secure][; HttpOnly]

每次設置不同的cookie名稱就是新增cookie,修改cookie時可以修改原cookie的expries、secure屬性,但不能修改domain、path屬性。修改cookie時domain、path必須與原cookie保持一致,不然就會新增cookie。將expries設為一個過去的時間或將max-age設為0可以刪除cookie。

cookie的缺點

安全性:由于cookie在HTTP中是明文傳遞的,其中包含的數據都可以被他人訪問,可能會被篡改、盜用。

  1. 大小限制:cookie的大小限制在4KB左右,若要做大量存儲顯然不是理想的選擇。
  2. 增加流量:cookie每次請求都會被自動添加到Request Header中,無形中增加了流量。cookie信息越大,對服務器請求的時間也越長。

session篇

在用戶訪問頁面時,服務器可以為每個用戶瀏覽器創建一個會話對象(session對象),并將sessionId保存到cookie上。注意:一個瀏覽器獨占一個session對象(默認情況下)。因此,在需要保存用戶數據時,服務器程序可以把用戶數據寫到用戶瀏覽器獨占的session中,當用戶使用瀏覽器訪問其它程序時,程序可以從用戶的session中取出該用戶的數據,為用戶服務。

session和cookie的區別

  1. cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。
  2. cookie不是很安全,別人可以分析存放在本地的COOKIE并進行COOKIE欺騙。
  3. session會在一定時間內保存在服務器上。當訪問增多,會比較占用你服務器的性能。
  4. cookie保存的數據不能超過4K,某些瀏覽器對cookie的名值對數量有限制。
參考文獻
  1. https://segmentfault.com/a/1190000004743454#articleHeader9 (cookie)
  2. http://www.cnblogs.com/xdp-gacl/p/3855702.html (session)
  3. http://www.cnblogs.com/yunian/articles/5736066.html (cookie+session)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容