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})