cookie和session的區別(全面總結)

前言

前些天在面試合合信息科技的實習生時,筆試時遇到cookie和session的對比,今天來個全面總結。面試

cookie

Cookie是訪問某些網站之後在本地存儲的一些網站相關的信息,下次再訪問的時候減小一些步驟。
Cookie中通常包括以下主要內容:數據庫

  1. key:設置的cookie的key。
  2. value:key對應的value。
  3. max_age/expire_time:設置cookie的過時時間。
  4. domain:該cookie在哪一個域名中有效。通常設置子域名,好比cms.example.com。
  5. path:該cookie在哪一個路徑下有效。

例如,咱們登陸某一個網站時須要輸入用戶名及密碼,若是用戶名和密碼保存爲cookie,則下次咱們登陸該網站的時候就不須要再輸入用戶密碼了。api

session

session是存在服務器的一種用來存放用戶數據的類HashTable結構。
瀏覽器第一次發送請求時,服務器自動生成了一HashTable和一SessionID來惟一標識這個HashTable,並將其經過響應發送到瀏覽器。瀏覽器第二次發送請求會將前一次服務器響應中的SessionID放在請求中一併發送到服務器上,服務器從請求中提取出Session ID,並和保存的全部Session ID進行對比,找到這個用戶對應的HashTable。跨域

例如,咱們瀏覽一個購物網站,用戶將部分商品添加到購物車中,許久之前許多網站都是用服務端session存儲購物車內容(如今基本都是用數據庫了),就用到了session存儲這部分信息。瀏覽器

區別

1.存儲位置不一樣

cookie的數據信息存放在本地。
session的數據信息存放在服務器上。安全

2.存儲容量大小不一樣

cookie存儲的容量較小,通常<=4KB。
session存儲容量大小沒有限制(可是爲了服務器性能考慮,通常不能存放太多數據)。服務器

3.存儲有效期不一樣

cookie能夠長期存儲,只要不超過設置的過時時間,能夠一直存儲。
session在超過必定的操做時間(一般爲30分鐘)後會失效,可是當關閉瀏覽器時,爲了保護用戶信息,會自動調用session.invalidate()方法,該方法會清除掉session中的信息。cookie

4.安全性不一樣

cookie存儲在客戶端,因此能夠分析存放在本地的cookie並進行cookie欺騙,安全性較低。
session存儲在服務器上,不存在敏感信息泄漏的風險,安全性較高。session

5.域支持範圍不一樣

cookie支持跨域名訪問。例如,全部a.com的cookie在a.com下都能用。
session不支持跨域名訪問。例如,www.a.com的session在api.a.com下不能用。併發

6.對服務器壓力不一樣

cookie保存在客戶端,不佔用服務器資源。
session是保存在服務器端,每一個用戶都會產生一個session,session過多的時候會消耗服務器資源,因此大型網站會有專門的session服務器。

7.存儲的數據類型不一樣

cookie中只能保管ASCII字符串,並須要經過編碼方式存儲爲Unicode字符或者二進制數據。 session中可以存儲任何類型的數據,包括且不限於string,integer,list,map等。

相關文章
相關標籤/搜索