《node,mongodb, koa系列》《六》

Cookie

  • cookie 是存储于访问者的计算机中的变量。可以让我们用同一个浏览器访问同一个域 名的时候共享数据。

  • HTTP 是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页 面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何 关系的。

const Koa = require('koa')
const router = require('koa-router')()

const app = new Koa()

router.get('/', (ctx) => { 
    ctx.cookies.set('userinfo', 'zhangsan',{
        maxAge: 60*1000*60,
        path: '/news'
    })
    ctx.body = '这是首页'
})

router.get('/news', (ctx) => {
    const userinfo = ctx.cookies.get('userinfo')
    ctx.body = userinfo
})

app.use(router.routes())
   .use(router.allowedMethods)

app.listen(3000)   

效果截图


image.png

cookie options参数列表

image.png

Session

  • session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而session保存在服务器上
  • 当浏览器访问服务器并发送第一次请求时,服务器端会创建一个session对象,生成一个类似于key,value的键值对,然后将key(cookie)返回到浏览器(客户端),浏览器再次再访问时,携带key(cookie),找到对应的session(value)。客户的信息都保存在session中。
// 安装
npm install koa-session --save

// app.js

const Koa = require('Koa')

const router = require('koa-router')()

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


app.keys = ['basketball']
const CONFIG = { 
    key: 'koa:sess', //cookie key (default is koa:sess)
    maxAge: 86400000, // cookie 的过期时间 maxAge in ms (default is 1 days)
    overwrite: true, //是否可以 overwrite (默认 default true)
    httpOnly: true, //cookie 是否只有服务器端可以访问 httpOnly or not (default true)
    signed: true, //签名默认 true
    rolling: false, //在每次请求时强行设置 cookie,这将重置 cookie 过期时间(默认:false)
    renew: false, //(boolean) renew session when session is nearly expired, 
}

app.use(session(CONFIG, app))                
router.get('/', (ctx) => {
    ctx.session.userInfo = 'kobe bryant'
    ctx.body = '首页'
})

router.get('/news', (ctx) => {
    ctx.body = ctx.session.userInfo
})

app.use(router.routes())
   .use(router.allowedMethods())

app.listen(30001)   

Cookie和Session区别

  • cookie数据存放在客户的浏览器上,session数据放在服务器上
  • cookie不是很安全,别人可以分析放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session
  • session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能方面
  • 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。