• Koa 中 Cookie 的使用


    Cookie 简介 

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

    Koa Cookie 的使用

     

    1Koa 中设置 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.

     

    2Koa 中获取 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
    //张三

     

     

     

     

  • 相关阅读:
    JavaScript--Promise(1)
    JavaScript--创建对象
    JavaScript--JSON
    JavaScript--generator
    JavaScript--闭包(1)
    JavaScript--sort()
    JavaScript--filter()
    JavaScript--map()&reduce()
    JavaScript--map&set
    3.11
  • 原文地址:https://www.cnblogs.com/loaderman/p/11511637.html
Copyright © 2020-2023  润新知