本篇,我介绍下express中cookie的解析,设置、获取、cookie签名等。
02_cookie.js
//02_cookie.js //介绍express 中cookie 的使用 // npm install cookie-parser --save var express = require('express'); var cookieParser = require('cookie-parser'); var app = express(); //express 中加入 cookieParser 中间件 app.use(cookieParser()); //设置cookie //res.cookie("name",'zhangsan',{maxAge: 900000, httpOnly: true}); //获取 cookie //req.cookies.name // app.get('/about/:name',function (req,res) { // console.log(req.params.name); //获取url路径参数name /xxx // console.log(req.query.name); //获取url查询字符串参数name ?name=xxx // res.send('ok'); // }); //res 设置cookie app.get("/setCookie",function (req,res) { var username =req.query['username'] ; //res 设置cookie 有效期1小时 httpOnly 只读 res.cookie('username',username,{ maxAge: 3600000, httpOnly: true }); res.send('ok'); }); //res 获取cookie app.get("/getCookie",function (req,res) { console.log(req.cookies); var username=req.cookies['username']; res.send("username: "+username); }); app.listen(3000);
cookie 使用小案例 : 显示旅游过的城市
02_cookie_city.js
//02_cookie_city.js // express 中cookie 使用 小案例 //旅游 浏览旅游过的城市。 var express = require('express'); var cookieParser = require('cookie-parser'); var app = express(); //express 中加入 cookieParser 中间件 app.use(cookieParser()); var citys=[]; app.get("/tour/:city",function (req,res) { var city=req.params.city; console.log(city); if(citys.indexOf(city)==-1){//说明没有 citys.push(city); } res.cookie("citys",citys); res.send('你游玩了城市: '+city); }); app.get('/getTour',function (req,res) { var citys =req.cookies['citys']; res.send("你游玩了城市: <br/>"+citys.toString()); }); app.listen(3000);设置cookie时的可选项参数有如下:
{
domain: 域名
name=value:键值对,可以设置要保存的 Key/Value,注意这里的 name 不能和其他属性项的名字 一样
Expires: 过期时间(秒),在设置的某个时间点后该 Cookie 就会失效,如 expires=Wednesday, 9-Nov-99 23:12:40 GMT
maxAge: 最大失效时间(毫秒),设置在多少后失效
secure: 当 secure 值为 true 时,cookie 在 HTTP 中是无效,在 HTTPS 中才有效
Path: 表示 cookie 影响到的路,如 path=/。如果路径不能匹配时,浏览器则不发送这个 Cookie
httpOnly:是微软对 COOKIE 做的扩展。如果在 COOKIE 中设置了“httpOnly”属性,则通过程序(JS 脚本、applet 等)将无法读取到COOKIE 信息,防止 XSS 攻击产生
singed:表示是否签名cookie, 设为true 会对这个 cookie 签名,这样就需要用 res.signedCookies 而不是 res.cookies 访问它。被篡改的签名 cookie 会被服务器拒绝,并且 cookie 值会重置为它的原始值
}
Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1