国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

node.js cookie-parser 中間件介紹

2019-11-20 09:47:16
字體:
來源:轉載
供稿:網友

之前加入了一個學習筆記本群,通過學習筆記來分享學習成果。也在這里發一份吧。

當我們在寫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 中間件的全部內容,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 榆社县| 获嘉县| 屯留县| 弥渡县| 原阳县| 临沧市| 色达县| 白山市| 蒙阴县| 项城市| 南岸区| 万盛区| 江西省| 铁岭县| 买车| 武威市| 长顺县| 扬州市| 中卫市| 鹰潭市| 岑巩县| 高唐县| 达孜县| 灵丘县| 年辖:市辖区| 常熟市| 琼中| 鱼台县| 荆州市| 当阳市| 仙居县| 平度市| 洪湖市| 安达市| 东阳市| 石渠县| 威信县| 双江| 临汾市| 芜湖县| 陇西县|