node.js cookie-parser之parser.js
cookie-parser的作用,官方的說法是:Parse Cookie header and populate req.cookies with an object keyed by the cookie names.我的理解是,轉(zhuǎn)換headers中的cookie并跟req.cookies合并。作為cookie-parser的核心,parser提示了2個函數(shù):signedCookies和JSONCookies,以及它們的幫助函數(shù)。
此文到這里也就結(jié)束了這個插件,讓我們來回顧一下,同時也打開了下一篇關(guān)于session的學(xué)習(xí)。
cookie-parser從客戶端取cookie,然后經(jīng)過express-session(以express為本)的處理。在客戶端表示為一個簽名后的字符串,在服務(wù)端,由于使用了unsign方法,所以能看到解簽過的字符。這樣一來,所有的迷底都解開了。我們來看看session那段處理cookie的代碼吧。
var signed = 's:' + signature.sign(val, secret);
// ....省略
res.setHeader('set-cookie', header)
}
此處利用set-cookie寫入cookie。當(dāng)客戶端發(fā)送cookie,此時就用到了parser.js的signedCookies。
var cookies = Object.keys(obj);
var dec;
var key;
var ret = Object.create(null);
var val;
for (var i = 0; i < cookies.length; i++) {
key = cookies[i];
val = obj[key];
dec = exports.signedCookie(val, secret);
if (val !== dec) {
ret[key] = dec;
delete obj[key];
}
}
return ret;
};
exports.signedCookie = function(str, secret){
return str.substr(0, 2) === 's:'
? signature.unsign(str.slice(2), secret)
: str;
};
在幫助函數(shù)signedCookie中,當(dāng)發(fā)現(xiàn)含有s:開始則是簽名過的cookie,這時就用了signature.unsign解簽。下次,讓我們來研究一下session。
以上就是node.js cookie-parser之parser.js的全部內(nèi)容,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
node.js實現(xiàn)pdf與圖片互轉(zhuǎn)代碼示例
因工作需求,記錄一次如何在Node中pdf與圖片互轉(zhuǎn)各種操作,這篇文章主要給大家介紹了關(guān)于node.js實現(xiàn)pdf與圖片互轉(zhuǎn)的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-04-04Node.js?npm?安裝過程中EBUSY錯誤的分析與解決方案
使用?npm?進行安裝是一個非常常見的操作,npm在安裝過程中可能出現(xiàn)EBUSY錯誤,本文就來介紹一下如何解決,具有一定的參考價值,感興趣的可以了解一下2025-01-01Node.js事件循環(huán)(Event Loop)的使用
事件循環(huán)是其非阻塞I/O和高并發(fā)能力的核心機制,本文主要介紹了Node.js事件循環(huán)(Event Loop)的使用,具有一定的參考價值,感興趣的可以了解一下2024-05-05Node.js+Express+MySql實現(xiàn)用戶登錄注冊功能
這篇文章主要為大家詳細介紹了Node.js+Express+MySql實現(xiàn)用戶登錄注冊,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07NodeJS使用Range請求實現(xiàn)下載功能的方法示例
本篇使用 NodeJS 的 HTTP 服務(wù)創(chuàng)建客戶端,使用 Range 請求實現(xiàn)下載功能,本篇使用 NodeJS 的 HTTP 服務(wù)創(chuàng)建客戶端,使用 Range 請求實現(xiàn)下載功能2018-10-10Node.js實現(xiàn)的簡易網(wǎng)頁抓取功能示例
這篇文章主要介紹了Node.js實現(xiàn)的簡易網(wǎng)頁抓取功能示例,本文使用了PhantomJS、node-phantomjs等庫實現(xiàn),需要的朋友可以參考下2014-12-12