大公司面試官問到的session和cookie的區(qū)別。你知道嗎?

1.cookie產(chǎn)生

識別用戶

HTTP是無狀態(tài)協(xié)議,這就回出現(xiàn)這種現(xiàn)象:當(dāng)你登錄一個(gè)頁面,然后轉(zhuǎn)到登錄網(wǎng)站的另一個(gè)頁面,服務(wù)器無法認(rèn)識到?;蛘哒f兩次的訪問,服務(wù)器不能認(rèn)識到是同一個(gè)客戶端的訪問,這就讓你重復(fù)登錄,所以產(chǎn)生了cookie。

cookie:第一次訪問一個(gè)服務(wù)器,不攜帶cookie,這時(shí)服務(wù)器在響應(yīng)(response)下行HTTP報(bào)文中,命令瀏覽器攜帶cookie信息;瀏覽器再訪問同一個(gè)域的時(shí)候,將把cookie信息攜帶到請求(request)上行HTTP請求中,從而實(shí)現(xiàn)了HTTP模擬有了狀態(tài)。

2.cookie特點(diǎn)

cookie是不加密的

cookie是可以被篡改和攻擊

cookie大小受到限制

3.node使用

//使用cookie必須要使用cookie-parser中間件

var cookieParser = require('cookie-parser');

app.use(cookieParser());

express中的cookie: res負(fù)責(zé)設(shè)置cookie, req負(fù)責(zé)識別cookie。

cookie用來制作記錄用戶的一些信息,如購買歷史、猜你喜歡、訪問量等

現(xiàn)在看session

4.session產(chǎn)生

由于cookie明文等一些不足所以產(chǎn)生了session

session依賴cookie,就是利用cookie,實(shí)現(xiàn)的“會話”,因此當(dāng)cookie被禁用,session也無法使用。

session比cookie不一樣在哪里呢? session會下發(fā)一個(gè)秘鑰(cookie)(亂碼),客戶端每次訪問都攜帶這個(gè)秘鑰,那么服務(wù)器如果發(fā)現(xiàn)這個(gè)秘鑰吻合,就能夠顯示這個(gè)用戶曾經(jīng)保存的信息。

任何語言中,session的使用,是“機(jī)理透明”的,也就是讓你感覺不到這事兒和cookie有關(guān)

5.session特點(diǎn)和使用

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同時(shí)需要重新登錄

6.cookie和session不同

cookie數(shù)據(jù)存放在客戶的瀏覽器上;session數(shù)據(jù)放在服務(wù)器緩存中。

cookie是明文,不安全,別人利用cookie可以被篡改和攻擊;而session存放服務(wù)器緩存中并且加密的,其他用戶看不到。

session會在一定時(shí)間內(nèi)保存在服務(wù)器上。當(dāng)用戶訪問增多,會比較占用你服務(wù)器內(nèi)存,考慮到減輕服務(wù)器性能方面,使用cookie。

單個(gè)cookie保存的數(shù)據(jù)不能超過4K,很多瀏覽器都限制一個(gè)站點(diǎn)最多保存20個(gè)cookie;session的密鑰(cookie),可以對應(yīng)可以對應(yīng)無限大的數(shù)據(jù)


? ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容