從前端的角度看cookie

cookie是前端經(jīng)常涉及到的一個(gè)工具,本身是小甜餅的意思,很可愛(ài)的叫法,下面是瀏覽到的一些關(guān)于cookie的特性和用法,分享一下:
1、js中的cookie是document的一個(gè)屬性,字符串形式的,內(nèi)容以鍵值對(duì)的形式存在:

document.cookie = "key=value; key=value; key=value"

或者使用更友好的cookieStore接口:

CookieStore.set()
CookieStore.get()
CookieStore.getAll()
CookieStore.delete()
CookieStore.onChange()

(只是僅用于https,且有一部分的瀏覽器不支持,兼容性需要考慮)
2、cookie是一個(gè)存儲(chǔ)機(jī)制,可以在內(nèi)存中或者是本地(加上過(guò)期時(shí)間 就會(huì)生成一個(gè)文件存儲(chǔ)在本機(jī)),存儲(chǔ)的內(nèi)容可以是SESSIONID,token等等的。
3、cookie的出現(xiàn)是為了彌補(bǔ)http請(qǐng)求無(wú)狀態(tài)的缺陷,session的概念出現(xiàn)之前使用cookie跟蹤會(huì)話(huà)。
4、和cookie有關(guān)的header有:請(qǐng)求頭 cookie,響應(yīng)頭 set-cookie, set-cookie可以添加、修改、刪除cookie,舉例說(shuō)明:

set-cookie: <name>=<value>[; expires=<date>][; domain=<domain_name>][; path=<some_path>][; secure][; httponly]
set-cookie: KLBRSID=0a401b23e8a71b70de2f4b37f5b4e379|1620719465|1620719456; Path=/
cookie: _zap=045f9128-159a-4802-8ca1-a2fe797fdeaf; d_c0="AADe0Knh_xKPTsoWnOPF_p0Tgwe35HgK5rk=|1619189561";  SESSIONID=yjD4PQ49DxIUoi1C71fbjJfo7EsV1rIIIKHqq4pCDw0; 

5、查看網(wǎng)站的cookie,在地址欄使用語(yǔ)句:

javascript:alert(dociment.cookie)

6、cookie功能需要瀏覽器支持,瀏覽器的設(shè)置中可以禁用cookie。
7、cookie是不可跨域的,具體表現(xiàn)在:瀏覽器訪問(wèn)A網(wǎng)站就攜帶A網(wǎng)站的cookie(根據(jù)域名區(qū)分不同網(wǎng)站的cookie),A網(wǎng)站不能操作B網(wǎng)站的cookie。
8、大多數(shù)瀏覽器每一個(gè)域可以對(duì)應(yīng)50個(gè)左右的cookie,存儲(chǔ)的內(nèi)容4kb左右,超過(guò)這個(gè)值,瀏覽器會(huì)自動(dòng)刪除。
9、同域內(nèi)瀏覽器發(fā)出的任何一個(gè)請(qǐng)求都攜帶cookie,但是資源類(lèi)型的請(qǐng)求攜帶的cookie對(duì)服務(wù)端一般沒(méi)有意義,所以可以另外存儲(chǔ)在一個(gè)域名下。
10、secure cookie:僅在https而不是http的請(qǐng)求中被攜帶,具有secure標(biāo)志。
11、httpOnly的cookie:只能通過(guò)http的方式訪問(wèn),其它方式比如跨域的腳本就不能讀取或者操作cookie。
12、不允許cookie跨域-samesite:
從a.com網(wǎng)站向b.com發(fā)起的請(qǐng)求不允許攜帶cookie

Set-Cookie: CookieName = CookieValue; SameSite = Lax;
Set-Cookie: CookieName = CookieValue; SameSite = Strict;

13、本地cookie和內(nèi)存cookie區(qū)別在于本地cookie被加上了過(guò)期時(shí)間,以文本的形式存儲(chǔ),過(guò)期了就被刪除。
部分內(nèi)容參考自:https://link.zhihu.com/?target=http%3A//www.imooc.com/article/286531

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

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

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