express cookie-parser 小书

简介

cookie-parser是Express最常运用的中间件,实际上虽然他名义上是一个中间件然则实际上已仿佛成为了Express的一个不可或缺的部份.

在Express4的文档中,支配Cookie的部份就一个要领和一个属性.然则实际上假如你不运用cookie-parser中间件这些要领是基础就不存在的.

先从Express支配cookie提及

假如有一个纯洁的Express,像如许:

const app = new express();
app.get('/login', (request, response) => {

    response.send('hello express');

});
app.listen(8888, '127.0.0.1');

我们怎样支配cookie?,明显只能在requestresponse中支配.

express在request供应了:

  • cookies {Object}

response供应了:

  • res.cookie(name, value [, options])

简朴来说一个用于猎取别的一个用于写入.

然则一切的条件就是你得运用cookie-parser中间件的条件下才能够具有这个属性和要领,之前我就被坑了.

在上面的极简实例中我们得运用:

app.get('/login', (request, response) => {

    console.log(request.headers.cookie);
    response.send('hello express');

});

才能够猎取没有运用cookie-parser中间件时刻的cookie.

cookie-parser的细致功用

  • 已键值对的情势的猎取cookie
  • 运用简朴的要领设置cookie
  • 关于cookie举行署名

挪用参数

cookie-parser在初始化的时刻和写入cookie的时刻许可传入参数.

在初始化的时刻许可传入:

参数范例形貌
secretstringstring[]用于署名cookie的字符串
optionsobject选项基于cookie模块

cookie要领参数

基础花样以下res.cookie(name, value [, options]).

个中第一个参数是name是cookie的键,而value是键对应的的值.

options有以下的选项,基础都是cookie在HttpHeader中的参数:

参数范例形貌
domainstring形貌cookie作用的主机
pathstirng只要在婚配胜利的地点才会发送cookie默许 /
encodefunction用于cookie的编码默许是encodeURIComponent
expiresdate运用GMT花样的时候来指定逾期时候
maxAgenumber指定多好毫秒后cookie失效
httpOnlyboolean设置后客户端无法访问cookie的内容
secureboolean标记这个cookie只要在https协定下起作用
signedboolean关于cookie举行署名
sameSiteboolean阻挠cookie在跨站要求的时刻发送

在MDN中有cookie的细致诠释,上面除了signed外都有引见.

https://developer.mozilla.org…

运用示例

基础示例:

const express = require('express');
const cookieParse = require('cookie-parser');

const app = new express();

app.use(cookieParse());

app.get('/login', (request, response) => {

    // 以键值对的情势猎取一切的cookie
    console.log(reqeust.cookies);
    
    // 写入cookie
    response.cookie('key', 'value');

    response.send('hello express');

});

app.listen(8888, '127.0.0.1');

运用cookie署名:

const express = require('express');
const cookieParse = require('cookie-parser');

const app = new express();

// 传入一个字符串对cookie举行署名
app.use(cookieParse('hello world'));

app.get('/login', (request, response) => {

    // 猎取没有署名的cookie
    console.log(request.cookies);
    // 猎取署名的cookie
    console.log(request.signedCookies);
    
    // 写入署名cookie
    response.cookie('signed', 'true', {maxAge: 100000,signed:true});
    
    // 写入未署名cookie
    response.cookie('key', 'value');
    
    
    response.send('hello express');

});

app.listen(8888, '127.0.0.1');
    原文作者:ASCll
    原文地址: https://segmentfault.com/a/1190000017161778
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞