node.js cookie-parser 中间件介绍


Posted in Javascript onJune 06, 2016

之前加入了一个学习笔记本群,通过学习笔记来分享学习成果。也在这里发一份吧。

当我们在写web的时候,难免会要使用到cookie,由于node.js有了express这个web框架,我们就可以方便地去建站。在使用express时,经常会使用到cookie-parser这个插件。今天我们来分析一下这个插件。

这个插件通常当作中间件使用,app.use(cookieParser()), 这样就可以处理每一个请求的cookie。

从名字上看,这就是一个解释Cookie的工具。通过req.cookies可以取到传过来的cookie,并把它们转成对象。下面,我们来深入它的源码。

首先,我们看index.js

var cookie = require('cookie');

var parse = require('./lib/parse');

这里有2个引用,一个是cookie,一个是cookie-parser这个核心功能。cookie这个模块,只提供了2个方法,一个是serialize另一个是parse。

serialize方法接收key和val,并序列化。 

var hdr = cookie.serialize('foo', 'bar');    // hdr = 'foo=bar';

paser方法把字符串转成对象 

var cookies = cookie.parse('foo=bar; cat=meow; dog=ruff'); // cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' };

再看下面,就是cookie-parser的主函数cookiePaser。 

exports = module.exports = function cookieParser(secret, options){

  return function cookieParser(req, res, next) {  // 从请求中得到req,res对象

    if (req.cookies) return next();  // 如果已经有cookie对象,则退出中间件继续运行

    var cookies = req.headers.cookie; // 从headers中取cookie

 

    req.secret = secret;                     // 如果有传入secret,则设置到req对象

    req.cookies = Object.create(null);       // 创建空对象给req.cookies

    req.signedCookies = Object.create(null); // 创建空对象给req.signedCookies

 

    // no cookies

    if (!cookies) {   // 如果没有从headers得到cookies

      return next();  // 退出中间件继续运行

    }

 

    req.cookies = cookie.parse(cookies, options);  // 调用cookie的parse方便把cookie字符串转成cookies对象。

 

    // parse signed cookies

    if (secret) {                                 // 如果设置了secret,则使用 parse的2个方法,把cookie签名。

      req.signedCookies = parse.signedCookies(req.cookies, secret);

      req.signedCookies = parse.JSONCookies(req.signedCookies);

    }

 

    // parse JSON cookies

    req.cookies = parse.JSONCookies(req.cookies); // 把req.cookies对象转化

 

    next();

  };

};

看了这个主函数,我们还有一些迷茫,正好就是它的主文件parse.js。我们在下次再看这个文件到底是做什么用的吧。

以上就是node.js cookie-parser 中间件的全部内容,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js脚本学习 比较实用的基础
Sep 07 Javascript
setTimeout 不断吐食CPU的问题分析
Apr 01 Javascript
jQuery 常见学习网站与参考书
Nov 09 Javascript
JS 有趣的eval优化输入验证实例代码
Sep 22 Javascript
jQueryUI DatePicker 添加时分秒
Jun 04 Javascript
Angular之指令Directive用法详解
Mar 01 Javascript
JQuery常见节点操作实例分析
May 15 jQuery
layui实现数据表格自定义数据项
Oct 26 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
Feb 05 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
May 26 Javascript
js实现网页随机验证码
Oct 19 Javascript
react中hook介绍以及使用教程
Dec 11 Javascript
JavaScript 对象字面量讲解
Jun 06 #Javascript
省市联动效果的简单实现代码(推荐)
Jun 06 #Javascript
js获取新浪天气接口的实现代码
Jun 06 #Javascript
浅谈Sublime Text 3运行JavaScript控制台
Jun 06 #Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
Jun 06 #Javascript
浅谈String.valueOf()方法的使用
Jun 06 #Javascript
深入理解JavaScript单体内置对象
Jun 06 #Javascript
You might like
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
PHP 删除一个目录及目录下的所有文件的函数代码
2010/05/26 PHP
php查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
jQuery的DOM操作之删除节点示例
2014/01/03 Javascript
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
JS比较2个日期间隔的示例代码
2014/04/15 Javascript
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
JS交换变量的方法
2015/01/21 Javascript
JavaScript判断表单中多选框checkbox选中个数的方法
2015/08/17 Javascript
vuex实现登录状态的存储,未登录状态不允许浏览的方法
2018/03/09 Javascript
微信小程序实现手指触摸画板
2018/07/09 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
vue+Element-ui实现登录注册表单
2020/11/17 Javascript
python调用cmd命令行制作刷博器
2014/01/13 Python
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
Python数据结构之图的应用示例
2018/05/11 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
opencv3/python 鼠标响应操作详解
2019/12/11 Python
django 实现简单的插入视频
2020/04/07 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
携程英文网站:Trip.com
2017/02/07 全球购物
学生自我鉴定模板
2013/12/30 职场文书
目标管理责任书
2014/04/15 职场文书
小学生环保演讲稿
2014/04/25 职场文书
建筑工地质量标语
2014/06/12 职场文书
物业总经理助理岗位职责
2014/06/29 职场文书
美德少年事迹材料1000字
2014/08/21 职场文书
党员检讨书
2014/10/13 职场文书
作文评语怎么写
2014/12/25 职场文书
机动车交通事故协议书
2015/01/29 职场文书
《平移和旋转》教学反思
2016/02/19 职场文书
低端且暴利的线上线下创业项目分享
2019/09/03 职场文书