[Koa2 系列 10] Cookie 的使用

[Koa2 系列 10] Cookie 的使用

Cookie 就是餅乾 … 好冷喔
如果不知道網頁 cookie 是做什麼用的,那這篇不適合你

寫入

寫入的只需要操作 ctx.cookies.set 就可以

const Koa = require('koa')
const app = new Koa()

app.use(async (ctx) => {
    if (ctx.url === '/index') {
        ctx.cookies.set(
            'MyName', 'Lemon', {
   domain:'127.0.0.1',
            path:'/index',
            maxAge:1000*60*60*24,
            expires:new Date('2018-12-31'),
            httpOnly:false,
            overwrite:false
        });
        ctx.body = 'cookie is ok'
    }else{
        if (ctx.cookies.get('MyName')) {
            ctx.body = ctx.cookies.get('MyName')
        } else {
            ctx.body = 'Cookie is not here'
        }
    }
});

app.listen(3000, () => {
    console.log('[demo] server is starting at port 3000')
})

而除了第一組個 key-value pair 是必填的內容外
後方大括號內容為選填,甚至可以只填入 key-value pair
不過還是說明一下那些東西是什麼,因為有時候可能會用到

  • domain:有效域名
  • path:有效路徑
  • maxAge:(Int) 有效時間長度
  • expires:(Date) 失效時間
  • httpOnly:(boolean) 是否限制 cookie 只能經由 HTTP(S) 協定來存取
  • overwrite:(boolean) 是否允許覆寫

讀取

跟寫入使用 set ,那讀取一點也不意外的 ctx.cookies.get('{key_name}')
把想取得的 cookie 鍵值帶入 {key_name} 就可以取得了!

結論

在 Koa2 中的 cookie 操作就是

  • ctx.cookies.set(name, value, [options]):在上下文中寫入cookie
  • ctx.cookies.get(name, [options]):讀取上下文請求中的cookie

留言