超詳細的Cookie增刪改查

1,什么是 Cookie?

Cookie是一些數(shù)據(jù), 存儲于你電腦上的文本文件中。
web服務(wù)器向瀏覽器發(fā)送web頁面時,在連接關(guān)閉后,服務(wù)端不會記錄用戶的信息。Cookie的作用就是用于解決如何記錄客戶端的用戶信息。當用戶訪問web頁面時,他的名字可以記錄在Cookie中。在該用戶下一次訪問該頁面時,可以在Cookie中讀取該用戶的訪問記錄。

  • 當瀏覽器從服務(wù)器上請求web頁面時, 屬于該頁面的Cookie會被添加到該請求中。服務(wù)端可以通過這種方式來獲取用戶的信息。

1.1,存儲形式

Cookie以鍵值對形式存儲,如下所示:

userName=pony

1.2,常用屬性

屬性 用處 默認值
Name
Value
Domain 允許訪問的域 當前域
Path 允許訪問的路徑 當前路徑
Expires / Max-Age 過期時間 關(guān)閉頁面即清除(Session)
Size 占用字節(jié)大小 無需設(shè)置
Cookie描述

1.3,大小限制

瀏覽器 大小 (KB) 每個域存儲個數(shù)限制
Firefox 4
Safari 4
Opera 4 30
IE 4 50
Edge 4 50
Chrome 4 50

2,增 or 改Cookie

/**
 * 設(shè)置cookie
 * @param {String} key 鍵
 * @param {String} value 值
 * @param {String} expires 過期時間(yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss 或 時間戳) => default:頁面關(guān)閉即過期(Session)
 * @param {String} domain 域 => default:當前域
 * @param {String} path 路徑 => default:/
*/
function setCookie(key, value, expires = '', domain = window.location.hostname, path = '/') {
  const time = expires ? new Date(expires) : expires
  console.log(time)
  const cookie = `${key}=${value}; expires=${time}; domain=${domain}; path=${path}`
  document.cookie = cookie
}

調(diào)用例子:

setCookie('user', '我是你爸爸', '2022-02-20 16:29:00').
// 或者
setCookie('user', '我是你爸爸', '2022-02-20')
// 或者
const timestamp = new Date('2022-10-01').getTime()
setCookie('user', '我是你爸爸', timestamp)

3,查Cookie

/**
 * 獲取所有cookie的key
 * @return {Array<string>} Cookie鍵組成的數(shù)組 
*/
function getAllCookieKey() {
  const Cookie = document.cookie
  const cookieList = Cookie.split('; ')
  return cookieKeyList = cookieList.map(item => {
    return item.split('=')[0]
  })
}

/**
 * 根據(jù)cookie的key獲取對應(yīng)的值
 * @param {String} key 鍵
 * @return {String} value 值
*/
function cookieKeyGetValue(key) {
  const Cookie = document.cookie
  const cookieList = Cookie.split('; ')
  const cookieKeyList = cookieList.map(item => {
    return item.split('=')[0]
  })
  const index = cookieKeyList.indexOf(key)
  return cookieList[index].split('=')[1]
}

4,刪Cookie

/**
 * 根據(jù)key清除cookie
 * @param {String} key 鍵
 * @param {String} domain 域 => default:當前域
 * @param {String} path 路徑 => default:/
*/
function clearCookie(key, domain = window.location.hostname, path = '/') {
  const Time = new Date()
  Time.setTime(Time.getTime() + -1 * 24 * 60 * 60 * 1000)
  const expires = `expires=${Time.toUTCString()}`
  document.cookie = `${key}=; ${expires}; path=${path}; domain=${domain}`
}


// 清除所有cookie
function clearAllCookie() {
  const cookieKeyList = getAllCookieKey()
  for (let key of cookieKeyList) {
    clearCookie(key)
  }
}

如果看了覺得有幫助的,我是@鵬多多,歡迎 點贊 關(guān)注 評論;
END

PS:在本頁按F12,在console中輸入document.querySelectorAll('._2VdqdF')[0].click(),有驚喜哦

往期文章

個人主頁

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容