Koa中使用Cookie

查看更多资源

1. Cookie 简介

  • cookie 是存储于访问者的计算机中的变量。可以让我们用同一个浏览器访问同一个域
    名的时候共享数据;
  • HTTP 是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页
    面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何
    关系的;
  • cookie保存在浏览器客户端;

  • 可以让我们用同一个浏览器访问同一个域名的时候共享数据;

  • 1、保存用户信息

    2、浏览器历史记录

    3、猜你喜欢的功能

    4、10天免登陆

    5、多个页面之间的数据传递

    6、cookie实现购物车功能

2. Koa中Cookie的使用

// 1. Koa 中设置 Cookie 的值
ctx.cookies.set(name, value, [options]); // 通过 options 设置 cookie name 的 value 

// 2. Koa 中获取 Cookie 的值
ctx.cookies.get('name');

// 3. Koa 中设置中文 Cookie
new Buffer('中文').toString('base64'); // 将中文转成base64字符串,存入cookie
new Buffer('aGVsbG8sIHdvcmxkIQ==', 'base64').toString(); // 还原成‘中文’
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', 'zhangsan2222', { // 2. 设置cookies
    maxAge: 60 * 1000 * 60, // 一般只需配置 maxAge

    // path:'/news',  /*配置可以访问的页面*/
    //domain:'.baidu.com'  /*正常情况不要设置 默认就是当前域下面的所有页面都可以方法*/
    // httpOnly: false,  //true表示这个cookie只有服务器端可以访问,false表示客户端(js),服务器端都可以访问
  });

  let list = {
    name: '张三'
  }
  await ctx.render('index', {
    list: list
  });
})

router.get('/news', async (ctx) => {
  var userinfo = ctx.cookies.get('userinfo'); // 3. 获取cookies
  console.log(userinfo);

  let app = {
    name: '张三11'
  };
  await ctx.render('news', {
    list: app
  });
})

router.get('/setZh', async (ctx) => {

  //koa中没法直接设置中文的cookie,需先将中文转成base64
  var userinfo = new Buffer('张三').toString('base64');
  ctx.cookies.set('userinfo_zh', userinfo, { // 4. 设置 中文 cookie
    maxAge: 60 * 1000 * 60
  });

  let list = {
    name: '张三'
  }
  await ctx.render('index', {
    list: list
  });
})

router.get('/getZh', async (ctx) => {

  var data = ctx.cookies.get('userinfo_zh');
  var userinfo = new Buffer(data, 'base64').toString(); // 5. 获取 cookie 还原成 中文 
  console.log(userinfo);

  let app = {
    name: '张三11'
  };
  await ctx.render('news', {
    list: app
  });
})

app.use(router.routes());   /*启动路由*/
app.use(router.allowedMethods());
app.listen(3000);

 3. Cookie 的 options 设置

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值