cookie和session同與異

面試和工做中有時候碰到cookie和session的同異,如今小結以下:
首先看cookie
cookie增刪改查:http://www.w3school.com.cn/js...node

1.cookie產生

識別用戶:用來客戶端和服務器端進行會話面試

  • HTTP是無狀態協議,這就回出現這種現象:當你登陸一個頁面,而後轉到登陸網站的另外一個頁面,服務器沒法認識到。或者說兩次的訪問,服務器不能認識到是同一個客戶端的訪問,這就讓你重複登陸,因此產生了cookie。
  • cookie:第一次訪問一個服務器,不攜帶cookie,這時服務器在響應(response)下行HTTP報文中,命令瀏覽器攜帶cookie信息;瀏覽器再訪問同一個域的時候,將把cookie信息攜帶到請求(request)上行HTTP請求中,從而實現了HTTP模擬有了狀態。
  • 每一個特定域名下面的cookie數量是有限制的,fixfox是50個,Opera是30個,chrome和safari是沒有限制的

2.cookie特色

  • cookie是不加密的
  • cookie是能夠被篡改和攻擊
  • cookie大小受到限制

3.node使用

//使用cookie必需要使用cookie-parser中間件
var cookieParser = require('cookie-parser');
app.use(cookieParser()); 
express中的cookie: res負責設置cookie, req負責識別cookie。
cookie用來製做記錄用戶的一些信息,如購買歷史、猜你喜歡、訪問量等

如今看sessionchrome

4.session產生

因爲cookie明文等一些不足因此產生了session
session依賴cookie,就是利用cookie,實現的「會話」,所以當cookie被禁用,session也沒法使用。
session比cookie不同在哪裏呢? session會下發一個祕鑰(cookie)(亂碼),客戶端每次訪問都攜帶這個祕鑰,那麼服務器若是發現這個祕鑰吻合,就可以顯示這個用戶曾經保存的信息。
任何語言中,session的使用,是「機理透明」的,也就是讓你感受不到這事兒和cookie有關express

5.session特色和使用

session是加密的瀏覽器

var session = reqiure("express-session");
app.use(session({
        ..一些配置
}));    
app.get("/",function(req,res){
    console.log(req.sission.login);
});    
app.get("/login",function(req,res){
         req.session.login = "1";
});
都是req對象

Session存在於服務器的內存中,若是服務器重啓就會丟失session同時須要從新登陸緩存

6.cookie和session不一樣

  1. cookie數據存放在客戶的瀏覽器上;session數據放在服務器緩存中。
  2. cookie是明文,不安全,別人利用cookie能夠被篡改和攻擊;而session存放服務器緩存中而且加密的,其餘用戶看不到。
  3. session會在必定時間內保存在服務器上。當用戶訪問增多,會比較佔用你服務器內存,考慮到減輕服務器性能方面,使用cookie。

4.單個cookie保存的數據不能超過4K,若是cookie的內容超過4K的話,那麼調用的時候就會返回一個空的字符串;session的密鑰(cookie),能夠對應無限大的數據安全

相關文章
相關標籤/搜索