1.cookie產生
識別用戶
HTTP是無狀態協議,這就回出現這種現象:當你登錄一個頁面,然后轉到登錄網站的另一個頁面,服務器無法認識到。或者說兩次的訪問,服務器不能認識到是同一個客戶端的訪問,這就讓你重復登錄,所以產生了cookie。
cookie:第一次訪問一個服務器,不攜帶cookie,這時服務器在響應(response)下行HTTP報文中,命令瀏覽器攜帶cookie信息;瀏覽器再訪問同一個域的時候,將把cookie信息攜帶到請求(request)上行HTTP請求中,從而實現了HTTP模擬有了狀態。
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用來制作記錄用戶的一些信息,如購買歷史、猜你喜歡、訪問量等
現在看session
4.session產生
由于cookie明文等一些不足所以產生了session
session依賴cookie,就是利用cookie,實現的“會話”,因此當cookie被禁用,session也無法使用。
session比cookie不一樣在哪里呢? session會下發一個秘鑰(cookie)(亂碼),客戶端每次訪問都攜帶這個秘鑰,那么服務器如果發現這個秘鑰吻合,就能夠顯示這個用戶曾經保存的信息。
任何語言中,session的使用,是“機理透明”的,也就是讓你感覺不到這事兒和cookie有關
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不同
cookie數據存放在客戶的瀏覽器上;session數據放在服務器緩存中。
cookie是明文,不安全,別人利用cookie可以被篡改和攻擊;而session存放服務器緩存中并且加密的,其他用戶看不到。
session會在一定時間內保存在服務器上。當用戶訪問增多,會比較占用你服務器內存,考慮到減輕服務器性能方面,使用cookie。
單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie;session的密鑰(cookie),可以對應可以對應無限大的數據
? ?