node.js cookie-parser之parser.js

时间:2021-05-26

cookie-parser的作用,官方的说法是:Parse Cookie header and populate req.cookies with an object keyed by the cookie names.我的理解是,转换headers中的cookie并跟req.cookies合并。作为cookie-parser的核心,parser提示了2个函数:signedCookies和JSONCookies,以及它们的帮助函数。

此文到这里也就结束了这个插件,让我们来回顾一下,同时也打开了下一篇关于session的学习。

cookie-parser从客户端取cookie,然后经过express-session(以express为本)的处理。在客户端表示为一个签名后的字符串,在服务端,由于使用了unsign方法,所以能看到解签过的字符。这样一来,所有的迷底都解开了。我们来看看session那段处理cookie的代码吧。

复制代码 代码如下:function setcookie(res, name, val, secret, options) {
var signed = 's:' + signature.sign(val, secret);
// ....省略

res.setHeader('set-cookie', header)
}

此处利用set-cookie写入cookie。当客户端发送cookie,此时就用到了parser.js的signedCookies。

复制代码 代码如下:exports.signedCookies = function(obj, secret){
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;
};

在帮助函数signedCookie中,当发现含有s:开始则是签名过的cookie,这时就用了signature.unsign解签。下次,让我们来研究一下session。

以上就是node.js cookie-parser之parser.js的全部内容,希望能给大家一个参考,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章