KoaJS cookies

  • 定义和使用

    cookies 是简单的小文件/数据,随服务器请求发送到客户端并存储在客户端。每次用户重新加载网站时,此 cookies 将与请求一起发送。这有助于跟踪用户的操作。
    HTTP cookies 有很多用途
    • Session management - 会话管理
    • Personalization - 个性化(推荐系统)
    • User tracking - 用户跟踪
  • 示例

    要将 cookiesKoa 一起使用,我们有以下功能:ctx.cookies.set()ctx.cookies.get(). 要设置一个新的 cookies,让我们在 Koa 应用程序中定义一个新的路由。
    var koa = require('koa');
    var router = require('koa-router'); 
    var app = new koa();
    
    var _router = router();   //实例化路由器
    
    _router.get('/', async (ctx)=>{
        ctx.cookies.set('foo', 'bar', {httpOnly: false});
    });
    
    app.use(_router.routes());  //使用路由器定义的路由
    
    app.listen(3001);
    
    要检查是否设置了 cookies,只需进入浏览器,启动控制台,然后输入-
    console.log(document.cookie);
    
    这将产生以下输出(可能是由于浏览器中的扩展,您可能设置了更多cookies)。
    "foo = bar"
    
    下面是上面的一个例子。
    png
    浏览器每次查询服务器时也会发回 cookies。要查看服务器上的 cookies,请在路由的服务器控制台上,向该路由添加以下代码。
    console.log('Cookies: foo = ', this.cookies.get('foo'));
    
    下次向该路由发送请求时,将得到以下输出。
    Cookies: foo = bar
    
  • 添加具有过期时间的Cookies

    您可以添加过期的 Cookies。若要添加过期的 cookies,只需传递一个对象,并将属性 "expires" 设置为您希望它过期的时间。例如,
    var koa = require('koa');
    var router = require('koa-router');
    var app = new koa();
    var _router = router();
    _router.get('/', async (ctx)=>{
        //在设置后360000毫秒后过期。
        ctx.cookies.set('name', 'value', { 
            httpOnly: false, expires: 360000 + Date.now()
        });
    });
    app.use(_router.routes());
    app.listen(3001);
    
  • 删除现有Cookies

    要取消设置 cookies,只需将 cookies 设置为空字符串。例如,如果需要清除名为 foo 的 cookies,请使用以下代码。
    var koa = require('koa');
    var router = require('koa-router');
    var app = new koa();
    var _router = router();
    _router.get('/', async (ctx)=>{
        ctx.cookies.set('name', '');
    });
    app.use(_router.routes());
    app.listen(3001);
    
    这将使所述 cookies 不稳定。请注意,在客户端中不应该只在代码中使用 http 选项。