隨著互聯網技術的不斷發展,我們在網站上瀏覽信息、購物、支付等行為是司空見慣。而為了方便用戶瀏覽網站,網站服務器會將一些數據保存在用戶的瀏覽器上,在用戶下次訪問該網站時,這些數據會被提取出來供服務器使用。這種保存數據的一種機制就是cookie。那么,cookie到底存放在哪里呢?本文將會對cookie的存儲位置進行探討,并提供一些代碼示例。
- Cookie的存儲位置
瀏覽器在客戶端保存cookie,因此cookie的存儲位置是由具體的瀏覽器實現方式決定的。不同的瀏覽器有不同的cookie儲存位置。主流的瀏覽器中,cookie儲存的位置如下:
Chrome:cookie信息保存在用戶的計算機上的%AppData%LocalGoogleChromeUser DataDefaultCookies文件中;
Firefox:cookie信息保存在用戶的計算機上的%AppData%RoamingMozillaFirefoxProfilesXXXX.defaultcookies.sqlite中;
Safari:cookie信息保存在用戶的計算機上的~/Library/Cookies/cookies.binarycookies中;
Edge:cookie信息保存在%AppData%LocalMicrosoftEdgeUser DataDefaultCookies中;
Internet Explorer:cookie信息保存在C:Users用戶名AppDataRoamingMicrosoftWindowsCookiesLow中,不過在Windows 10以后的系統中已經逐漸棄用。
總之,在大多數情況下,cookie信息都是保存在本地文件中,而不是在遠程服務器上。
- JavaScript中的Cookie操作
下面我們將介紹在JavaScript中如何操作Cookie。一般來說,cookie的讀取、添加、刪除是基于document.cookie這個屬性來實現的。
讀取cookie值:
在JavaScript中,可以通過以下方式來讀取cookie:
function getCookie(name){ var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); if(arr=document.cookie.match(reg)){ return decodeURIComponent(arr[2]); }else{ return null; } }
登錄后復制
使用正則表達式匹配要查找的cookie的名稱,然后匹配到了就返回名稱對應的值。需要注意的是,由于cookie值可能包含中文等非ASCII字符,因此需要解碼(使用decodeURIComponent()方法)。
添加cookie:
在JavaScript中,可以通過以下方式來添加cookie:
function setCookie(name,value,duration){ var exp = new Date(); exp.setTime(exp.getTime() + duration * 24 * 60 * 60 * 1000); document.cookie = name + "=" + encodeURIComponent(value) + ";expires=" + exp.toGMTString() + ";path=/"; }
登錄后復制
其中,name代表cookie的名稱,value代表cookie的值,duration代表cookie的有效期(單位為天)。這里使用了Date對象來計算cookie的過期時間,然后將cookie信息存儲在document.cookie中。
刪除cookie:
在JavaScript中,可以通過以下方式來刪除cookie:
function deleteCookie(name){ var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval = getCookie(name); if(cval != null){ document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString() + ";path=/"; } }
登錄后復制
其中,name代表cookie的名稱。這里將cookie的過期時間設為一個過去的時間,然后存儲到document.cookie中。
- Node.js中的Cookie操作
在Node.js中,可以使用第三方庫來方便地操作Cookie。這里以cookie-parser這個庫為例,介紹在Node.js中如何添加、讀取、刪除Cookie。
安裝cookie-parser:
在終端中輸入以下命令來安裝cookie-parser:
npm install cookie-parser
登錄后復制
添加cookie:
在Node.js中,可以通過以下方式來添加cookie:
const cookieParser = require('cookie-parser'); app.use(cookieParser()); app.get('/setCookie',function(req,res){ res.cookie('name','value',{maxAge: 900000, httpOnly: true }); res.send('cookie added'); });
登錄后復制
其中,name代表cookie的名稱,value代表cookie的值,maxAge代表cookie的有效期(單位為毫秒)。
讀取cookie:
在Node.js中,可以通過以下方式來讀取cookie:
app.get('/getCookie',function(req,res){ var value=req.cookies.name; res.send('cookie value:'+value); });
登錄后復制
其中,name代表cookie的名稱。
刪除cookie:
在Node.js中,可以通過以下方式來刪除cookie:
app.get('/clearCookie',function(req,res){ res.clearCookie('name'); res.send('cookie cleared'); });
登錄后復制
其中,name代表cookie的名稱。
- 結論
本文介紹了cookie存儲位置的探討以及JavaScript和Node.js中的Cookie操作方法。需要注意的是,cookie信息是不加密的,因此敏感數據不應該直接存儲在cookie中,而是應該進行加密處理。另外,需要注意cookie的有效期,以避免過期未清除導致的安全問題。