node.js cookie-parser之parser.js
cookie-parser的作用,官方的说法是:ParseCookieheaderandpopulatereq.cookieswithanobjectkeyedbythecookienames.我的理解是,转换headers中的cookie并跟req.cookies合并。作为cookie-parser的核心,parser提示了2个函数:signedCookies和JSONCookies,以及它们的帮助函数。
此文到这里也就结束了这个插件,让我们来回顾一下,同时也打开了下一篇关于session的学习。
cookie-parser从客户端取cookie,然后经过express-session(以express为本)的处理。在客户端表示为一个签名后的字符串,在服务端,由于使用了unsign方法,所以能看到解签过的字符。这样一来,所有的迷底都解开了。我们来看看session那段处理cookie的代码吧。
functionsetcookie(res,name,val,secret,options){
varsigned='s:'+signature.sign(val,secret);
//....省略
res.setHeader('set-cookie',header)
}
此处利用set-cookie写入cookie。当客户端发送cookie,此时就用到了parser.js的signedCookies。
exports.signedCookies=function(obj,secret){
varcookies=Object.keys(obj);
vardec;
varkey;
varret=Object.create(null);
varval;
for(vari=0;i<cookies.length;i++){
key=cookies[i];
val=obj[key];
dec=exports.signedCookie(val,secret);
if(val!==dec){
ret[key]=dec;
deleteobj[key];
}
}
returnret;
};
exports.signedCookie=function(str,secret){
returnstr.substr(0,2)==='s:'
?signature.unsign(str.slice(2),secret)
:str;
};
在帮助函数signedCookie中,当发现含有s:开始则是签名过的cookie,这时就用了signature.unsign解签。下次,让我们来研究一下session。
以上就是node.jscookie-parser之parser.js的全部内容,希望能给大家一个参考,也希望大家多多支持毛票票。