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個(gè)函數(shù):signedCookies和JSONCookies,以及它們的幫助函數(shù)。
此文到這里也就結(jié)束了這個(gè)插件,讓我們來回顧一下,同時(shí)也打開了下一篇關(guān)于session的學(xué)習(xí)。
cookie-parser從客戶端取cookie,然后經(jīng)過express-session(以express為本)的處理。在客戶端表示為一個(gè)簽名后的字符串,在服務(wù)端,由于使用了unsign方法,所以能看到解簽過的字符。這樣一來,所有的迷底都解開了。我們來看看session那段處理cookie的代碼吧。
var signed = 's:' + signature.sign(val, secret);
// ....省略
res.setHeader('set-cookie', header)
}
此處利用set-cookie寫入cookie。當(dāng)客戶端發(fā)送cookie,此時(shí)就用到了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,這時(shí)就用了signature.unsign解簽。下次,讓我們來研究一下session。
以上就是node.js cookie-parser之parser.js的全部?jī)?nèi)容,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
node.js實(shí)現(xiàn)pdf與圖片互轉(zhuǎn)代碼示例
因工作需求,記錄一次如何在Node中pdf與圖片互轉(zhuǎn)各種操作,這篇文章主要給大家介紹了關(guān)于node.js實(shí)現(xiàn)pdf與圖片互轉(zhuǎn)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04Node.js?npm?安裝過程中EBUSY錯(cuò)誤的分析與解決方案
使用?npm?進(jìn)行安裝是一個(gè)非常常見的操作,npm在安裝過程中可能出現(xiàn)EBUSY錯(cuò)誤,本文就來介紹一下如何解決,具有一定的參考價(jià)值,感興趣的可以了解一下2025-01-01Node.js事件循環(huán)(Event Loop)的使用
事件循環(huán)是其非阻塞I/O和高并發(fā)能力的核心機(jī)制,本文主要介紹了Node.js事件循環(huán)(Event Loop)的使用,具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05Node.js+Express+MySql實(shí)現(xiàn)用戶登錄注冊(cè)功能
這篇文章主要為大家詳細(xì)介紹了Node.js+Express+MySql實(shí)現(xiàn)用戶登錄注冊(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07淺談Node.js 子進(jìn)程與應(yīng)用場(chǎng)景
這篇文章主要介紹了淺談Node.js 子進(jìn)程與應(yīng)用場(chǎng)景,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-01-01NodeJS使用Range請(qǐng)求實(shí)現(xiàn)下載功能的方法示例
本篇使用 NodeJS 的 HTTP 服務(wù)創(chuàng)建客戶端,使用 Range 請(qǐng)求實(shí)現(xiàn)下載功能,本篇使用 NodeJS 的 HTTP 服務(wù)創(chuàng)建客戶端,使用 Range 請(qǐng)求實(shí)現(xiàn)下載功能2018-10-10Node.js實(shí)現(xiàn)的簡(jiǎn)易網(wǎng)頁抓取功能示例
這篇文章主要介紹了Node.js實(shí)現(xiàn)的簡(jiǎn)易網(wǎng)頁抓取功能示例,本文使用了PhantomJS、node-phantomjs等庫實(shí)現(xiàn),需要的朋友可以參考下2014-12-12express項(xiàng)目文件目錄說明以及功能描述詳解
這篇文章主要給大家介紹了關(guān)于express項(xiàng)目文件目錄說明以及功能描述的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04