關(guān)于Cookie項(xiàng)目實(shí)踐后知道的

在知乎上回答過(guò) Cookie 從哪里來(lái),網(wǎng)站用它來(lái)干嘛? 這樣一個(gè)問(wèn)題春叫,它只介紹了Cookie是什么残家。但作為一個(gè)職場(chǎng)多年,發(fā)現(xiàn)很多工作數(shù)年的同事骑歹,對(duì)Cookie對(duì)理解仍舊還不夠预烙。這才有了這篇文章,嘗試從實(shí)用對(duì)角度來(lái)介紹Cookie道媚。

1. Cookie和其他本地存儲(chǔ)

最常見(jiàn)用到對(duì)本地存儲(chǔ)除了Cookie之外扁掸,還有l(wèi)ocalStorage和sessionStorge,它們是客戶端主動(dòng)寫(xiě)最域,和Cookie主要由服務(wù)器寫(xiě)(set-cookie)有所不同谴分。

localStorage和sessionStorge之間則存在著有效期、作用域的差別镀脂,可以參考:JavaScript權(quán)威指南 第20章 存儲(chǔ) 的第1.2節(jié)牺蹄。

2. 第一方和第三方Cookie

image.png

以打開(kāi) http://www.reibang.com 為例,可以看到Cookies欄包含了來(lái)自 http://www.reibang.comhttps://googleads./g.doubleclick.net 的Cookie薄翅。

其中打開(kāi)網(wǎng)址種的Cookie叫第一方Cookie沙兰,網(wǎng)址引用的資源(比如圖片 js)所屬服務(wù)器所種的Cookie叫第三方Cookie。第三方Cookie的一個(gè)應(yīng)用翘魄,就是廣告商用于分析用戶數(shù)據(jù)鼎天,2020年Google已經(jīng)在申明中湖i逐步取消第三方Cookie的權(quán)限。

3. Cookie怎么種上的

image.png

第二節(jié)中看到了jianshu種下了9個(gè)Cookie暑竟,查看 http://www.reibang.com的Response斋射,可以看到通過(guò)Set-Cookie,寫(xiě)了4個(gè)Cookie但荤。

另外可以通過(guò)在請(qǐng)求中加載的JS代碼中罗岖,看到setCookie的代碼,可見(jiàn)jianshu也利用JS在本地設(shè)置了一些Cookie腹躁。

4. Cookie被使用的規(guī)則

一句話概括:Cookie被種哪里(文檔+路徑)下呀闻,發(fā)出這個(gè)規(guī)則的請(qǐng)求就會(huì)攜帶Cookie。

比如在 www.reibang.com 下種了__yadk_uid潜慎,那么訪問(wèn)http://www.reibang.com/p/207585cb1bc5
的時(shí)候捡多,就會(huì)攜帶這個(gè)Cookie。

image.png

而假如jianshu的服務(wù)器后端接口域名為api.jianshu.com铐炫,那么上述Cookie就不會(huì)被攜帶垒手,而.jianshu.com種的sensorsdata2015jssdkcrosssajssdk_2015_cross_new_user就會(huì)被帶上。

5. 關(guān)于Cookie的作用域和有效期

我們?cè)谝粋€(gè)瀏覽器tab上登陸了jianshu以后倒信,在新的瀏覽器tab打開(kāi)科贬,肯定是不用再重新登陸的,也就是說(shuō)作用域應(yīng)該是文檔+路徑(為什么不說(shuō)域名,后面會(huì)介紹)相關(guān)聯(lián)的榜掌,只要還是這個(gè)文檔+路徑优妙,就仍舊可以訪問(wèn)到這個(gè)Cookie。

通過(guò)第2節(jié)中的圖片憎账,我們看到又一欄叫Expires/Max-Age套硼,也就是說(shuō)Cookie的有效期是的服務(wù)器可以設(shè)定的,可以是具體實(shí)踐胞皱,也可以是想session這樣的邪意。

6. 只有文檔(頁(yè)面)可以中Cookie嗎

因?yàn)橄到y(tǒng)登陸是通過(guò)接口登陸的,在登陸成功后反砌,很多后端實(shí)現(xiàn)會(huì)在Response中也通過(guò)Set-Cookie來(lái)往瀏覽器上寫(xiě)Cooike雾鬼。

下圖是一個(gè)例子,一個(gè)后端調(diào)用的Response中攜帶了Token信息宴树,并且指定了對(duì) eleme.test 域名起作用策菜。

image.png

這里比較容易誤解的一點(diǎn)是,如果你訪問(wèn)了a.com網(wǎng)站酒贬,如果它的后端地址是b.com并且Cookie也是種在這個(gè)地址上做入,那么直接通過(guò)瀏覽器對(duì)Application-Cookies中能看到的僅是和a.com相關(guān)的第一方和第三方的Cookie。

想查看b.com的Cookie同衣,可以直接拷貝 b.com的地址在瀏覽器上訪問(wèn),然后通過(guò)查看Network壶运,就可以看到在b.com上的Cookie耐齐。

7. 關(guān)于Cookie的更多

JavaScript權(quán)威指南 第20章 存儲(chǔ) 比較詳細(xì)的介紹了Cookie,僅本篇文章還不足以介紹它的文檔+路徑的概念蒋情,有效期的設(shè)置埠况,以及Secure、HttpOnly等的使用棵癣。

當(dāng)然隨著使用也會(huì)發(fā)現(xiàn)一些在你理解之外的東西辕翰,這里先歸檔如下,期望你來(lái)解答狈谊。

問(wèn)題1: 設(shè)置Domain和服務(wù)器地址不一致

在實(shí)際觀察中(如下圖標(biāo)記為3的位置)喜命,發(fā)現(xiàn)一個(gè)Domain中的地址可以和源文檔沒(méi)有任何關(guān)系,即網(wǎng)站是 a.b.com河劝,卻可以設(shè)置Cookie在xyz.com上壁榕,而不僅限于 a.b.com.b.com,這是為什么呢赎瞎?豈不是可以隨意覆寫(xiě)其他Domain的Cookie值牌里?

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市务甥,隨后出現(xiàn)的幾起案子牡辽,更是在濱河造成了極大的恐慌喳篇,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件态辛,死亡現(xiàn)場(chǎng)離奇詭異麸澜,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)因妙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)痰憎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人攀涵,你說(shuō)我怎么就攤上這事铣耘。” “怎么了以故?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵蜗细,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我怒详,道長(zhǎng)炉媒,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任昆烁,我火速辦了婚禮吊骤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘静尼。我一直安慰自己白粉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布鼠渺。 她就那樣靜靜地躺著鸭巴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拦盹。 梳的紋絲不亂的頭發(fā)上鹃祖,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音普舆,去河邊找鬼恬口。 笑死,一個(gè)胖子當(dāng)著我的面吹牛沼侣,可吹牛的內(nèi)容都是我干的楷兽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼华临,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼芯杀!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤揭厚,失蹤者是張志新(化名)和其女友劉穎却特,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體筛圆,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡裂明,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了太援。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闽晦。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖提岔,靈堂內(nèi)的尸體忽然破棺而出仙蛉,到底是詐尸還是另有隱情,我是刑警寧澤碱蒙,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布荠瘪,位于F島的核電站,受9級(jí)特大地震影響赛惩,放射性物質(zhì)發(fā)生泄漏哀墓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一喷兼、第九天 我趴在偏房一處隱蔽的房頂上張望篮绰。 院中可真熱鬧,春花似錦季惯、人聲如沸吠各。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至惧辈,卻和暖如春琳状,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盒齿。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工念逞, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人边翁。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓翎承,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親符匾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子叨咖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355