简介
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?,明显只能在request
和response
中支配.
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的时刻许可传入参数.
在初始化的时刻许可传入:
参数 | 范例 | 形貌 | |
---|---|---|---|
secret | string | string[] | 用于署名cookie的字符串 |
options | object | 选项基于cookie模块 |
cookie要领参数
基础花样以下res.cookie(name, value [, options])
.
个中第一个参数是name
是cookie的键,而value
是键对应的的值.
options有以下的选项,基础都是cookie在HttpHeader中的参数:
参数 | 范例 | 形貌 |
---|---|---|
domain | string | 形貌cookie作用的主机 |
path | stirng | 只要在婚配胜利的地点才会发送cookie默许 / |
encode | function | 用于cookie的编码默许是encodeURIComponent |
expires | date | 运用GMT花样的时候来指定逾期时候 |
maxAge | number | 指定多好毫秒后cookie失效 |
httpOnly | boolean | 设置后客户端无法访问cookie的内容 |
secure | boolean | 标记这个cookie只要在https协定下起作用 |
signed | boolean | 关于cookie举行署名 |
sameSite | boolean | 阻挠cookie在跨站要求的时刻发送 |
在MDN中有cookie的细致诠释,上面除了signed
外都有引见.
运用示例
基础示例:
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');