1.前端理解的cookie:
- cookie 是一个变量,它存在访问者的计算机中。
- 作用:可以让我们用同一个浏览器访问同一个域名的时候共享数据。
2.后台理解的cookie:
cookie是一种报文头信息,请求报文和响应报文中都可以有cookie,key-value的形式,主要用来识别用户身份。
例如:
浏览器第一次访问域名A--》服务器向客户端发送cookie--》浏览器存储
浏览器再次访问域名A--》将这个cookie返回给服务器
这相当于浏览器与服务器建立会话,关闭浏览器,会话结束;
3.在学习koa2设置cookie前,可以比较一下express 是如何设置cookie的;nodejs基础教程-简单blog(5)-cookie保存用户登录状态
下面是koa2设置cookie
cookie:
cookie = {
maxAge: '', // cookie有效时长 单位:毫秒数
expires: '', // cookie失效时间
path: '', // 写cookie所在的路径,默认是'/'
domain: '', // 写cookie所在的域名
httpOnly: '', //是否只用于http请求中获取; 默认是 true ,客户端不可读取
// 是否允许重写 一个布尔值,表示是否覆盖以前设置的同名的 cookie (默认是 false).
// 如果是 true, 在同一个请求中设置相同名称的所有 Cookie(不管路径或域)是否在设置此Cookie 时从 Set-Cookie 标头中过滤掉。
overwrite: '',
secure: '',// 安全 cookie 默认false,设置成true表示只有 https可以访问
sameSite: '',
signed: '',
}
//expires/maxAge 字段为此cookie超时时间。若设置其值为一个时间,那么当到达此时间后,
//此cookie失效。不设置的话默认值是Session
4.设置cookie;
ctx.cookies.set(
'cid',//name
'hello world222',//value
{
maxAge: 10 * 60 * 1000, // cookie有效时
//expires: new Date('2018-11-17'), // cookie失效时间
}
)
首次建立会话,只有response headers中有cookie.
第二次建立会话,request headers中也有cookie
5.服务器清除cookie
ctx.cookies.set('cid', '', { maxAge: 0})