cookie和session(1)
cookie和session
1.cookie產(chǎn)生
識別用戶?
HTTP是無狀態(tài)協(xié)議,這就回出現(xiàn)這種現(xiàn)象:當你登錄一個頁面,然后轉(zhuǎn)到登錄網(wǎng)站的另一個頁面,服務(wù)器無法認識到。或者說兩次的訪問,服務(wù)器不能認識到是同一個客戶端的訪問,這就讓你重復(fù)登錄,所以產(chǎn)生了cookie。?
cookie:第一次訪問一個服務(wù)器,不攜帶cookie,這時服務(wù)器在響應(yīng)(response)下行HTTP報文中,命令瀏覽器攜帶cookie信息;瀏覽器再訪問同一個域的時候,將把cookie信息攜帶到請求(request)上行HTTP請求中,從而實現(xiàn)了HTTP模擬有了狀態(tài)。
2.cookie特點
-
cookie是不加密的
-
cookie是可以被篡改和攻擊
-
cookie大小受到限制
3.node使用
//使用cookie必須要使用cookie-parser中間件
var cookieParser = require('cookie-parser');
app.use(cookieParser());
express中的cookie: res負責(zé)設(shè)置cookie, req負責(zé)識別cookie。?
cookie用來制作記錄用戶的一些信息,如購買歷史、猜你喜歡、訪問量等
現(xiàn)在看session
4.session產(chǎn)生
由于cookie明文等一些不足所以產(chǎn)生了session?
session依賴cookie,就是利用cookie,實現(xiàn)的“會話”,因此當cookie被禁用,session也無法使用。?
session比cookie不一樣在哪里呢? session會下發(fā)一個秘鑰(cookie)(亂碼),客戶端每次訪問都攜帶這個秘鑰,那么服務(wù)器如果發(fā)現(xiàn)這個秘鑰吻合,就能夠顯示這個用戶曾經(jīng)保存的信息。?
任何語言中,session的使用,是“機理透明”的,也就是讓你感覺不到這事兒和cookie有關(guān)
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存在于服務(wù)器的內(nèi)存中,如果服務(wù)器重啟就會丟失session同時需要重新登錄
6.cookie和session不同
-
cookie數(shù)據(jù)存放在客戶的瀏覽器上;session數(shù)據(jù)放在服務(wù)器緩存中。
-
cookie是明文,不安全,別人利用cookie可以被篡改和攻擊;而session存放服務(wù)器緩存中并且加密的,其他用戶看不到。
-
session會在一定時間內(nèi)保存在服務(wù)器上。當用戶訪問增多,會比較占用你服務(wù)器內(nèi)存,考慮到減輕服務(wù)器性能方面,使用cookie。
-
單個cookie保存的數(shù)據(jù)不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie;session的密鑰(cookie),可以對應(yīng)可以對應(yīng)無限大的數(shù)據(jù)
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/wyliunan/p/7452815.html
總結(jié)
以上是生活随笔為你收集整理的cookie和session(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 1257
- 下一篇: JAVA基础——时间Date类型转换