自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用 JavaScript 操作 Cookie

開(kāi)發(fā) 前端
下面我們將介紹如何用 JavaScript 在瀏覽器中設(shè)置、獲取、更新和刪除 Cookie 數(shù)據(jù)。

Web 服務(wù)器和 HTTP 服務(wù)器是無(wú)狀態(tài)的,因此當(dāng) Web 服務(wù)器將網(wǎng)頁(yè)發(fā)送到瀏覽器時(shí),連接會(huì)被斷開(kāi),服務(wù)器會(huì)忘記與用戶相關(guān)的所有內(nèi)容。

那么瀏覽器和 Web 服務(wù)器是怎樣記住用戶信息的?cookie 被發(fā)明出來(lái)解決這個(gè)問(wèn)題。

當(dāng)用戶訪問(wèn)網(wǎng)頁(yè)時(shí),他們的名字、唯一 ID 或其他任何信息都可以存儲(chǔ)在瀏覽器的 cookie 中。當(dāng)用戶下次又回到網(wǎng)頁(yè)時(shí),cookie 將記住他們的名字或唯一 ID。

[[379088]]

Cookie 只是存儲(chǔ)在計(jì)算機(jī)瀏覽器中的小型文本文件。它們包含以下數(shù)據(jù):

  • 保存數(shù)據(jù)的 Name-value 對(duì)
  • 日期到期時(shí),該 cookie 失效
  • 應(yīng)將其發(fā)送到的服務(wù)器的域和路徑

而cookie也有一些值得一提的限制:

  • 每個(gè)cookie的最大為 4096 字節(jié)
  • 每個(gè)域最多20個(gè)cookie(每個(gè)瀏覽器略有不同)
  • Cookie是其自己的域名專用的(網(wǎng)站無(wú)法讀取其他域的 Cookie,只能是它自己的)
  • 大小限制適用于整個(gè)cookie,而不僅僅是它的值

在瀏覽器中,cookie通過(guò) DOM 被公開(kāi)為 document.cookies。

下面我們將介紹如何用 JavaScript 在瀏覽器中設(shè)置、獲取、更新和刪除 Cookie 數(shù)據(jù)。

 

Create Cookies

用 JavaScript 在瀏覽器中設(shè)置 cookie 非常簡(jiǎn)單!我將在下面向你展示。

(1) 設(shè)置 Cookie

以下是在瀏覽器中用 JavaScript 創(chuàng)建新 cookie 的執(zhí)行代碼:

  1. document.cookie = "userId=nick123" 

運(yùn)行該代碼后,打開(kāi)瀏覽器,你應(yīng)該能在開(kāi)發(fā)者工具的 Application(Safari 或Chrome)或 Storage(Firefox)中找到該 cookie。

(2) 設(shè)置 cookie 的過(guò)期時(shí)間

你還可以向 Cookie 中添加過(guò)期時(shí)間(UTC),告知瀏覽器應(yīng)該在什么時(shí)候?qū)⑵鋭h除:

  1. document.cookie = "userId=nick123; expires=Wed, 15 Jan 2020 12:00:00 UTC" 

(3) 設(shè)置一個(gè) Cookie 路徑

你還可以告訴瀏覽器 cookie 所屬的路徑(默認(rèn)值是當(dāng)前頁(yè)面的路徑):

  1. document.cookie = "userId=nick123; expires=Wed, 15 Jan 2020 12:00:00 UTC; path=/user" 

(4) 設(shè)置 cookie 域

我們將介紹的最后一段數(shù)據(jù)是 cookie 所屬的域(默認(rèn)為當(dāng)前域):

  1. document.cookie = "userId=nick123; expires=Wed, 15 Jan 2020 12:00:00 UTC; path=/user; domain=mysite.com" 

Read Cookies

通過(guò) document.cookie 對(duì)象,用 JavaScript 讀取 cookie 也非常簡(jiǎn)單:

(1) 讀取單個(gè)頁(yè)面所有的 Cookie

將單個(gè)頁(yè)面的所有 cookie 作為字符串獲取,每個(gè) cookie 用分號(hào)分隔:

  1. const cookies = document.cookie 

(2) 讀取具有特定名稱的Cookie

要訪問(wèn)具有特定名稱的 cookie,我們需要獲取頁(yè)面上所有的 cookie 并解析字符串,然后查找我們想要尋找的 cookie 名稱的匹配項(xiàng)。

這是一個(gè)用正則表達(dá)式完成此任務(wù)的函數(shù):

  1. function getCookieValue(name) { 
  2.   let result = document.cookie.match("(^|[^;]+)\\s*" + name + "\\s*=\\s*([^;]+)") 
  3.   return result ? result.pop() : "" 

你這樣使用該函數(shù):

  1. getCookieValue("userId") //returns nick123 

這將返回與提供給函數(shù)的 name 參數(shù)對(duì)應(yīng)的字符串值。

如果你還沒(méi)有掌握正則表達(dá)式,還有另一個(gè)同樣功能的函數(shù):

  1. function getCookieValue(name) { 
  2.   const namenameString = name + "=" 
  3.    
  4.   const value = document.cookie.split(";").filter(item => { 
  5.     return item.includes(nameString) 
  6.   }) 
  7.    
  8.   if (value.length) { 
  9.     return value[0].substring(nameString.length, value[0].length) 
  10.   } else { 
  11.     return "" 
  12.   } 

用相同的方法使用該函數(shù):

  1. getCookieValue("userId") //returns nick123 

Update Cookies

你可以通過(guò)創(chuàng)建的方式用新值覆蓋 cookie 來(lái)更改它的值。

你可以用此代碼覆蓋本文前面創(chuàng)建的 cookie "userId" :

  1. document.cookie = "userId=new_value" 

當(dāng)你再次運(yùn)行 getCookieValue 函數(shù)時(shí),將返回新值:

  1. getCookieValue("userId") //returns new_value 

Delete Cookies

你可以給 cookie 設(shè)置一個(gè)空值,并將其過(guò)期日期設(shè)置為過(guò)去的任意時(shí)間來(lái)刪除 cookie。

如果我們想要?jiǎng)h除前面例子的 cookie "userId" ,請(qǐng)按以下步驟操作:

  1. document.cookie = "userId=; expires=Thu, 01 Jan 1970 00:00:00 UTC;" 

很簡(jiǎn)單吧?

 

責(zé)任編輯:趙寧寧 來(lái)源: 前端先鋒
相關(guān)推薦

2010-10-09 15:31:51

JavaScriptCookie

2010-09-30 15:59:16

JSPCookie

2011-07-11 15:51:50

cookie

2011-06-21 14:25:44

JavaScriptcookie

2009-06-18 15:49:31

jQuery插件

2009-12-10 17:27:39

PHP操作Cookie

2011-08-11 13:53:45

JavaScript

2009-06-17 16:01:28

2009-07-27 10:35:24

高亮Javascrip

2021-03-27 11:02:04

JavaScript隊(duì)列編程語(yǔ)言

2009-06-15 15:54:53

Java中Cookie

2009-12-30 16:48:52

Silverlight

2009-07-28 12:52:50

ASP.NET coo

2024-02-27 19:22:00

cookieStorCookie事件

2009-09-24 17:28:26

JavaScript操

2010-09-13 17:12:55

JavaScript

2013-08-21 09:21:01

2011-04-08 16:26:14

JavaScript

2017-07-19 14:26:01

前端JavaScriptDOM

2023-07-07 09:04:18

JavaScript時(shí)間操作
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)