简介cookie-parser是Express最常用的中间件。事实上,虽然名义上是一个中间件,但实际上已经成为了Express不可或缺的一部分。在Express4文档中,操作Cookie的部分是一个方法和一个属性。但实际上,如果不使用cookie-parser中间件,这些方法根本不存在。让我们从Express操作cookie开始。如果有一个纯Express,像这样:constapp=newexpress();app.get('/login',(request,response)=>{response.send('helloexpress');});app.听(8888,'127.0.0.1');我们如何操作cookie?,显然只能在请求和响应中进行操作。expressprovidesinrequest:cookies{Object}providesinresponse:res.cookie(name,value[,options])简单来说,一个是用来获取另一个写的但一切的前提是你得用cookie-parser中间件要有这个属性和方法。我以前被骗过。在上面的极简示例中,我们必须使用:app.get('/login',(request,response)=>{console.log(request.headers.cookie);response.send('helloexpress');});只有这样才能在不使用cookie-parser中间件的情况下获取cookie.cookie——解析器的具体作用是获取键值对形式的cookie。使用简单的方法设置cookie对cookie进行签名,调用参数cookie-parser允许在初始化和写入cookie时传入参数。输入:参数类型描述secretstringstring[]用于标记cookie字符串optionsobjectoptions基于cookie模块的cookie方法参数基本格式如下res.cookie(name,value[,options])。第一个参数name是cookie的key,value是它是键对应的值。options有以下几个选项,基本都是HttpHeader中cookie的参数:参数类型描述domainstring描述cookie函数的宿主pathstirng只会在匹配地址成功的情况下才会发送cookie。default/encodefunction用于cookie默认编码为encodeURIComponentexpiresdate使用GMT格式的时间指定过期时间maxAgenumber指定cookie过期后多少毫秒httpOnlyboolean设置后客户端无法访问cookie的内容secureboolean标记此cookieonly工作在https协议下发送跨站请求时,MDN中对cookie有详细的解释,除了signed外都有介绍。https://developer.mozilla.org...使用示例的基本示例:constexpress=require('express');constcookieParse=require('cookie-parser');constapp=newexpress();app.use(cookieParse());app.get('/login',(request,response)=>{//以键值对的形式获取所有cookiesconsole.log(reqeust.cookies);//写入cookieresponse.cookie('key','value');response.send('helloexpress');});app.listen(8888,'127.0.0.1');使用cookie签名:constexpress=require('express');constcookieParse=require('cookie-parser');constapp=newexpress();//传入一个字符串来对cookie进行签名app.use(cookieParse('helloworld'));app.get('/login',(request,response)=>{//获取未签名的cookieconsole.log(request.cookies);//获取签名cookieconsole.log(request.signedCookies);//写入已签名的cookie响应。cookie('signed','true',{maxAge:100000,signed:true});//写入未签名的cookieresponse.cookie('key','value');response.send('helloexpress');});app.listen(8888,'127.0.0.1');
