node.js cookie-parser之parser.js
cookie-parser的作用,官方的說(shuō)法是: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è)插件,讓我們來(lái)回顧一下,同時(shí)也打開(kāi)了下一篇關(guān)于session的學(xué)習(xí)。
cookie-parser從客戶(hù)端取cookie,然后經(jīng)過(guò)express-session(以express為本)的處理。在客戶(hù)端表示為一個(gè)簽名后的字符串,在服務(wù)端,由于使用了unsign方法,所以能看到解簽過(guò)的字符。這樣一來(lái),所有的迷底都解開(kāi)了。我們來(lái)看看session那段處理cookie的代碼吧。
var signed = 's:' + signature.sign(val, secret);
// ....省略
res.setHeader('set-cookie', header)
}
此處利用set-cookie寫(xiě)入cookie。當(dāng)客戶(hù)端發(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:開(kāi)始則是簽名過(guò)的cookie,這時(shí)就用了signature.unsign解簽。下次,讓我們來(lái)研究一下session。
以上就是node.js cookie-parser之parser.js的全部?jī)?nèi)容,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- node.js cookie-parser 中間件介紹
- Node.js 中 cors 依賴(lài)示例詳解
- Node.js 中 morgan 依賴(lài)及基本使用詳解
- Node.js項(xiàng)目依賴(lài)問(wèn)題的詳細(xì)解決步驟
- 在Linux系統(tǒng)上升級(jí)Node.js遇到GLIBC依賴(lài)問(wèn)題的多種解決方案
- Node.js中的npm單獨(dú)與批量升級(jí)依賴(lài)包的方式超詳細(xì)講解
- 基于node.js依賴(lài)express解析post請(qǐng)求四種數(shù)據(jù)格式
- Node.js 中 cookie-parser 依賴(lài)安裝使用詳解
相關(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)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04Node.js?npm?安裝過(guò)程中EBUSY錯(cuò)誤的分析與解決方案
使用?npm?進(jìn)行安裝是一個(gè)非常常見(jiàn)的操作,npm在安裝過(guò)程中可能出現(xiàn)EBUSY錯(cuò)誤,本文就來(lái)介紹一下如何解決,具有一定的參考價(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)用戶(hù)登錄注冊(cè)功能
這篇文章主要為大家詳細(xì)介紹了Node.js+Express+MySql實(shí)現(xiàn)用戶(hù)登錄注冊(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07淺談Node.js 子進(jìn)程與應(yīng)用場(chǎng)景
這篇文章主要介紹了淺談Node.js 子進(jìn)程與應(yīng)用場(chǎng)景,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01NodeJS使用Range請(qǐng)求實(shí)現(xiàn)下載功能的方法示例
本篇使用 NodeJS 的 HTTP 服務(wù)創(chuàng)建客戶(hù)端,使用 Range 請(qǐng)求實(shí)現(xiàn)下載功能,本篇使用 NodeJS 的 HTTP 服務(wù)創(chuàng)建客戶(hù)端,使用 Range 請(qǐng)求實(shí)現(xiàn)下載功能2018-10-10Node.js實(shí)現(xiàn)的簡(jiǎn)易網(wǎng)頁(yè)抓取功能示例
這篇文章主要介紹了Node.js實(shí)現(xiàn)的簡(jiǎn)易網(wǎng)頁(yè)抓取功能示例,本文使用了PhantomJS、node-phantomjs等庫(kù)實(shí)現(xiàn),需要的朋友可以參考下2014-12-12express項(xiàng)目文件目錄說(shuō)明以及功能描述詳解
這篇文章主要給大家介紹了關(guān)于express項(xiàng)目文件目錄說(shuō)明以及功能描述的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04