cookie
用户到商店买东西,商店出了个想法,给用户张会员卡,会员卡有两种方案
一种是上面的,一张卡能用10次折扣,每用一次次数-1。
但有个弊端,会员卡的次数记录在卡上,卡在用户里,要是用户用某些方法改了会员卡的次数就能无限刷
另一种是下面的,会员卡只记录个人信息,商店读取卡里的个人信息来获取折扣次数,并在商店的电脑改变次数,显然更安全
cookie就会服务器发给客户端的一个凭证,如商店给用户发会员卡,而商店通过session来对应cookie以此找到用户信息
cookie是写在客户端上的数据,session是记录在服务器上的数据
设置cookie
const Koa = require("koa");//引入koa构造函数
const app = new Koa();//创建应用
const views = require("koa-views");//引入koa-views
const nunjucks = require("nunjucks");//引入nunjucks引擎
const router = require("koa-router")();
app.use(views(__dirname + "/views",{
map:{html:"nunjucks"}
}))
router.get("/",async ctx => {
//cookie是以明值对(类似于对象的键值对)的方式记录在客户端(浏览器)的
ctx.cookies.set("user","admin");//设置cookie 属性名是user,值是admin
ctx.body = "cookie";
})
app.use(router.routes());
app.listen(3000,() => {
console.log("server is running");
});
获取cookie
const Koa = require("koa");//引入koa构造函数
const app = new Koa();//创建应用
const views = require("koa-views");//引入koa-views
const nunjucks = require("nunjucks");//引入nunjucks引擎
const router = require("koa-router")();
app.use(views(__dirname + "/views",{
map:{html:"nunjucks"}
}))
router.get("/",async ctx => {
//cookie是以明值对(类似于对象的键值对)的方式记录在客户端(浏览器)的
ctx.cookies.set("user","admin");//设置cookie 属性名是user,值是admin
ctx.body = "cookie";
})
router.get("/test",async ctx => {
let user = ctx.cookies.get("user");//获取相应字段的cookie
ctx.body = user;
})
app.use(router.routes());
app.listen(3000,() => {
console.log("server is running");
});
页面显示admin,说明成功拿到了cookie的值
记录网页访问次数
const Koa = require("koa");//引入koa构造函数
const app = new Koa();//创建应用
const views = require("koa-views");//引入koa-views
const nunjucks = require("nunjucks");//引入nunjucks引擎
const router = require("koa-router")();
app.use(views(__dirname + "/views",{
map:{html:"nunjucks"}
}))
router.get("/",async ctx => {
//cookie是以明值对(类似于对象的键值对)的方式记录在客户端(浏览器)的
ctx.cookies.set("user","admin");//设置cookie 属性名是user,值是admin
ctx.body = "cookie";
})
router.get("/test",async ctx => {
let count = ctx.cookies.get("count");//获取cookie,但页面第一次加载是获取不到cookie的,要刷新一次才行
if(count > 0){//判断是否有cookie
count = ++count;
ctx.cookies.set("count",count,{
maxAge:5000//设置cookie过期时间为5s,5s内没有刷新页面cookie就会失效
});
}else{
count = 1;
ctx.cookies.set("count",1);
}
ctx.body = count;
})
app.use(router.routes());
app.listen(3000,() => {
console.log("server is running");
});
5s后失效