Cookie 简介
- cookie是存储于访问者的计算机中的变量。可以让我们用同一个浏览器访问同一个域名的时候共享数据。
- HTTP 是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页 面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何 关系的。
Koa Cookie 的使用
1、Koa 中设置 Cookie 的值
ctx.cookies.set(name, value, [options])
options 名称 |
options 值 |
maxAge |
一个数字表示从 Date.now() 得到的毫秒数 |
expires |
cookie 过期的 Date |
path |
cookie 路径, 默认是'/' |
domain |
cookie 域名 |
secure |
安全 cookie 默认 false,设置成 true 表示 只有 https 可以访问 |
httpOnly |
是否只是服务器可访问 cookie, 默认是true |
overwrite |
一个布尔值,表示是否覆盖以前设置的同名 的 cookie (默认是 false). 如果是 true, 在同 一个请求中设置相同名称的所有 Cookie(不 管路径或域)是否在设置此 Cookie 时从 Set-Cookie 标头中过滤掉。 a boolean indicating whether to overwrite previously set cookies of the same name (false by default). If this is true, all cookies set during the same request with the same name (regardless of path or domain) are filtered out of the Set-Cookie header when setting this cookie. |
2、Koa 中获取 Cookie 的值
ctx.cookies.get('name');
三、Koa 中设置中文 Cookie
console.log(new Buffer('hello, world!').toString('base64'));// 转换成 base64 字符 串:aGVsbG8sIHdvcmxkIQ==
console.log(new Buffer('aGVsbG8sIHdvcmxkIQ==', 'base64').toString());// 还原 base 64 字符串:hello, world!
demo:
/*
1.cookie保存在浏览器客户端
2.可以让我们用同一个浏览器访问同一个域 名的时候共享数据
/*
1、保存用户信息
2、浏览器历史记录
3、猜你喜欢的功能
4、10天免登陆
5、多个页面之间的数据传递
6、cookie实现购物车功能
ctx.cookies.set('userinfo','zhangsan',{
maxAge:60*1000*60
});
var userinfo=ctx.cookies.get('userinfo');
*/
var Koa=require('koa'),
router = require('koa-router')(),
render = require('koa-art-template'),
path=require('path');
var app=new Koa();
//配置 koa-art-template模板引擎
render(app, {
root: path.join(__dirname, 'views'), // 视图的位置
extname: '.html', // 后缀名
debug: process.env.NODE_ENV !== 'production' //是否开启调试模式
});
router.get('/',async (ctx)=>{
//正常就这样配置就可以使用了
/*
ctx.cookies.set('userinfo','zhangsan',{
maxAge:60*1000*60
});
* */
ctx.cookies.set('userinfo','zhangsan2222',{
maxAge:60*1000*60,
// path:'/news', /*配置可以访问的页面*/
//domain:'.baidu.com' /*正常情况不要设置 默认就是当前域下面的所有页面都可以方法*/
httpOnly:false, //true表示这个cookie只有服务器端可以访问,false表示客户端(js),服务器端都可以访问
/*
a.baidu.com
b.baidu.com 共享cookie的数据
express基础教程
* */
});
let list={
name:'张三'
}
await ctx.render('index',{
list:list
});
})
router.get('/about',async (ctx)=>{
ctx.cookies.set('userinfo','zhangsan33333',{
maxAge:60*1000*60,
path:'/news'
});
ctx.body="这是关于我们";
})
//接收post提交的数据
router.get('/news',async (ctx)=>{
var userinfo=ctx.cookies.get('userinfo');
console.log(userinfo);
let app={
name:'张三11'
};
await ctx.render('news',{
list:app
});
})
router.get('/shop',async (ctx)=>{
var userinfo=ctx.cookies.get('userinfo');
console.log(userinfo);
ctx.body='这是一个商品页面'+userinfo;
})
app.use(router.routes()); /*启动路由*/
app.use(router.allowedMethods());
app.listen(3000);
cookie设置汉字
/*
1.cookie保存在浏览器客户端
2.可以让我们用同一个浏览器访问同一个域 名的时候共享数据
/*
1、保存用户信息
2、浏览器历史记录
3、猜你喜欢的功能
4、10天免登陆
5、多个页面之间的数据传递
6、cookie实现购物车功能
*/
var Koa=require('koa'),
router = require('koa-router')(),
render = require('koa-art-template'),
path=require('path');
var app=new Koa();
//配置 koa-art-template模板引擎
render(app, {
root: path.join(__dirname, 'views'), // 视图的位置
extname: '.html', // 后缀名
debug: process.env.NODE_ENV !== 'production' //是否开启调试模式
});
router.get('/',async (ctx)=>{
//koa中没法直接设置中文的cookie
var userinfo=new Buffer('张三').toString('base64');
ctx.cookies.set('userinfo',userinfo,{
maxAge:60*1000*60
});
let list={
name:'张三'
}
await ctx.render('index',{
list:list
});
})
router.get('/news',async (ctx)=>{
var data=ctx.cookies.get('userinfo');
var userinfo=new Buffer(data, 'base64').toString();
console.log(userinfo);
let app={
name:'张三11'
};
await ctx.render('news',{
list:app
});
})
app.use(router.routes()); /*启动路由*/
app.use(router.allowedMethods());
app.listen(3000);
console.log(new Buffer('张三').toString('base64'));// 转换成 base64 字符
//5byg5LiJ
console.log(new Buffer('5byg5LiJ', 'base64').toString());// 还原 base64
//张三