揭開(kāi)cookie的秘密:它們究竟存在何處?
在日常網(wǎng)站使用中,我們經(jīng)常會(huì)與cookie打交道,比如記住密碼、購(gòu)物車、廣告推薦等,而cookie的作用則無(wú)法忽略。那么,cookie究竟是什么?它們存儲(chǔ)于何處?我們今天就來(lái)揭開(kāi)cookie的秘密。
什么是cookie?
cookie是一種存儲(chǔ)在用戶計(jì)算機(jī)上的小數(shù)據(jù)文件,通常由網(wǎng)站發(fā)送給瀏覽器,然后瀏覽器會(huì)在后續(xù)請(qǐng)求中將其發(fā)送回相應(yīng)的服務(wù)器。它們通常用于存儲(chǔ)用戶的會(huì)話信息、購(gòu)物車內(nèi)容、喜好設(shè)置等等,以便于下次訪問(wèn)網(wǎng)站時(shí),可以自動(dòng)地識(shí)別用戶并加載相應(yīng)的數(shù)據(jù)。
究竟存在何處?
在說(shuō)到cookie存放的位置時(shí),我們需要先了解一下HTTP協(xié)議的基本知識(shí)。在HTTP協(xié)議中,有兩種不同的存儲(chǔ)方式:會(huì)話存儲(chǔ)和持久存儲(chǔ)。
- 會(huì)話存儲(chǔ)
會(huì)話存儲(chǔ)的意思是,當(dāng)用戶關(guān)閉瀏覽器窗口時(shí),所有的cookie都會(huì)從計(jì)算機(jī)中刪除。這意味著session cookie 只會(huì)存活于用戶當(dāng)前會(huì)話中。如果用戶關(guān)閉了瀏覽器,session cookie也就被刪除了。
下面是一個(gè)簡(jiǎn)單的例子,演示如何使用Express框架創(chuàng)建一個(gè)會(huì)話cookie:
const express = require('express') const cookieParser = require('cookie-parser') const app = express() app.use(cookieParser()) app.get('/', (req, res) => { res.cookie('username', 'john doe', { httpOnly: true }) res.send(`Hello World!`) }) app.listen(3000, () => { console.log(`Example app listening at http://localhost:3000`) })
登錄后復(fù)制
在這個(gè)例子中,我們使用了cookie-parser
的中間件,將會(huì)話cookie存儲(chǔ)在瀏覽器內(nèi)存中。如果用戶關(guān)閉了瀏覽器窗口,該cookie將被刪除。
- 持久存儲(chǔ)
持久cookie不同于會(huì)話cookie,它們可以設(shè)置過(guò)期時(shí)間,即使關(guān)閉了瀏覽器,它們?nèi)匀粫?huì)在計(jì)算機(jī)上存儲(chǔ),直到過(guò)期時(shí)間到達(dá)或手動(dòng)刪除。
下面是一個(gè)例子,演示如何使用Express框架創(chuàng)建一個(gè)持久cookie:
const express = require('express') const cookieParser = require('cookie-parser') const app = express() app.use(cookieParser()) app.get('/', (req, res) => { res.cookie('username', 'john doe', { maxAge: 60 * 60 * 1000, httpOnly: true }) res.send(`Hello World!`) }) app.listen(3000, () => { console.log(`Example app listening at http://localhost:3000`) })
登錄后復(fù)制
在這個(gè)例子中,我們將maxAge
選項(xiàng)設(shè)置為1個(gè)小時(shí),這意味著該cookie將在1個(gè)小時(shí)后過(guò)期。當(dāng)過(guò)期時(shí)間到達(dá)后,它將被自動(dòng)從計(jì)算機(jī)中刪除。
結(jié)論
通過(guò)上面的介紹,我們可以得知,瀏覽器可以存儲(chǔ)會(huì)話cookie和持久cookie。會(huì)話cookie存儲(chǔ)在瀏覽器的內(nèi)存中,而持久cookie存儲(chǔ)在用戶計(jì)算機(jī)的硬盤上。一旦過(guò)期時(shí)間到達(dá)或者用戶手動(dòng)刪除,持久cookie也將被刪除。因此在應(yīng)用程序設(shè)計(jì)中,需要謹(jǐn)慎考慮cookie的類型和生命周期,確保應(yīng)用程序的正常運(yùn)行。