Cookie理解

具體屬性資料:https://github.com/mqyqingfeng/Blog/issues/157

起因:HTTP是無(wú)狀態(tài)協(xié)議

注意:Cookie的存在是為了解決后端服務(wù)的狀態(tài)問(wèn)題,而不是通訊協(xié)議的狀態(tài)問(wèn)題,別搞混了拗小。

優(yōu)點(diǎn):不需要保持狀態(tài)蚪拦,減少服務(wù)器的CPU及內(nèi)存消耗。也正是因?yàn)镠TTP協(xié)議本身非常簡(jiǎn)單根吁,所以被應(yīng)用于不同場(chǎng)景。

解決方案:Cookie

Cookie

作用:通過(guò)在請(qǐng)求和響應(yīng)報(bào)文中寫(xiě)入Cookie信息來(lái)控制客戶端的狀態(tài)。

主要流程:Cookie會(huì)根據(jù)服務(wù)器端發(fā)送的響應(yīng)報(bào)文內(nèi)的Set-Cookie首部字段信息合呐,通知客戶端保存Cookie。當(dāng)下次客戶端再次發(fā)送請(qǐng)求笙以,帶上該Cookie;服務(wù)端根據(jù)客戶端Cookie鑒定客戶端來(lái)源淌实,對(duì)比服務(wù)器記錄,得到該客戶端之前狀態(tài)信息。


跨域和跨站

首先要理解的一點(diǎn)就是跨站和跨域是不同的拆祈。同站(same-site)/跨站(cross-site)」和第一方(first-party)/第三方(third-party)是等價(jià)的恨闪。但是與瀏覽器同源策略(SOP)中的「同源(same-origin)/跨域(cross-origin)」是完全不同的概念。

同源策略的同源是指兩個(gè) URL 的協(xié)議/主機(jī)名/端口一致放坏。例如咙咽,https://www.taobao.com/pages/...,它的協(xié)議是?https淤年,主機(jī)名是?www.taobao.com钧敞,端口是?443。

同源策略作為瀏覽器的安全基石麸粮,其「同源」判斷是比較嚴(yán)格的溉苛,相對(duì)而言,Cookie中的「同站」判斷就比較寬松:只要兩個(gè) URL 的 eTLD+1 相同即可弄诲,不需要考慮協(xié)議和端口愚战。其中,eTLD 表示有效頂級(jí)域名齐遵,注冊(cè)于 Mozilla 維護(hù)的公共后綴列表(Public Suffix List)中寂玲,例如,.com梗摇、.co.uk敢茁、.github.io 等。eTLD+1 則表示留美,有效頂級(jí)域名+二級(jí)域名彰檬,例如 taobao.com 等。

舉幾個(gè)例子谎砾,www.taobao.com 和?www.baidu.com?是跨站逢倍,www.a.taobao.com 和?www.b.taobao.com?是同站,a.github.io 和 b.github.io 是跨站(注意是跨站)景图。

主要注意點(diǎn):SameSite

SameSite 是最近非常值得一提的內(nèi)容较雕,因?yàn)?2 月份發(fā)布的 Chrome80 版本中默認(rèn)屏蔽了第三方的 Cookie挚币,這會(huì)導(dǎo)致阿里系的很多應(yīng)用都產(chǎn)生問(wèn)題亮蒋,為此還專門(mén)成立了問(wèn)題小組,推動(dòng)各 BU 進(jìn)行改造妆毕。

屬性值:
1. Strict:
僅允許一方請(qǐng)求攜帶Cookie慎玖,即瀏覽器將只發(fā)送相同站點(diǎn)請(qǐng)求的Cookie,即當(dāng)前網(wǎng)頁(yè)URL與請(qǐng)求目標(biāo)URL完全一致笛粘。

2. Lax: 允許部分第三方請(qǐng)求攜帶Cookie

3. None: 無(wú)論是否跨站都會(huì)發(fā)送Cookie


影響:舉個(gè)例子趁怔,例如阿里巴巴在各大網(wǎng)站比如今日頭條湿硝、網(wǎng)易、微博等投放廣告润努,是用iframe嵌入的关斜,設(shè)置SameSite為L(zhǎng)ax就不能發(fā)送Cookie,就不能準(zhǔn)確的進(jìn)行推薦铺浇。

解決:設(shè)置SameSite為None

不過(guò)也會(huì)有兩點(diǎn)要注意的地方:

HTTP 接口不支持 SameSite=none

????如果你想加 SameSite=none 屬性痢畜,那么該 Cookie 就必須同時(shí)加上 Secure 屬性,表示只有在 HTTPS 協(xié)議下該 Cookie 才會(huì)被發(fā)送鳍侣。

需要 UA 檢測(cè)裁着,部分瀏覽器不能加 SameSite=none

????IOS 12 的 Safari 以及老版本的一些 Chrome 會(huì)把 SameSite=none 識(shí)別成 SameSite=Strict,所以服務(wù)端必須在下發(fā) Set-Cookie 響應(yīng)頭時(shí)進(jìn)行 User-Agent 檢測(cè)拱她,對(duì)這些瀏覽器不下發(fā) SameSite=none 屬性

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市扔罪,隨后出現(xiàn)的幾起案子秉沼,更是在濱河造成了極大的恐慌,老刑警劉巖矿酵,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唬复,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡全肮,警方通過(guò)查閱死者的電腦和手機(jī)敞咧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)辜腺,“玉大人休建,你說(shuō)我怎么就攤上這事∑懒疲” “怎么了测砂?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)百匆。 經(jīng)常有香客問(wèn)我砌些,道長(zhǎng),這世上最難降的妖魔是什么加匈? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任存璃,我火速辦了婚禮,結(jié)果婚禮上雕拼,老公的妹妹穿的比我還像新娘纵东。我一直安慰自己,他們只是感情好啥寇,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布篮迎。 她就那樣靜靜地躺著男图,像睡著了一般。 火紅的嫁衣襯著肌膚如雪甜橱。 梳的紋絲不亂的頭發(fā)上逊笆,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音岂傲,去河邊找鬼难裆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛镊掖,可吹牛的內(nèi)容都是我干的乃戈。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼亩进,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼症虑!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起归薛,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤谍憔,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后主籍,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體习贫,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年千元,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了苫昌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡幸海,死狀恐怖祟身,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情物独,我是刑警寧澤月而,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站议纯,受9級(jí)特大地震影響父款,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瞻凤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一憨攒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧阀参,春花似錦肝集、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)所刀。三九已至,卻和暖如春捞挥,著一層夾襖步出監(jiān)牢的瞬間浮创,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工砌函, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留斩披,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓讹俊,卻偏偏與公主長(zhǎng)得像垦沉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子仍劈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 什么是Cookie HTTP協(xié)議本身是無(wú)狀態(tài)的厕倍。什么是無(wú)狀態(tài)呢,即服務(wù)器無(wú)法判斷用戶身份贩疙。Cookie實(shí)際上是一小...
    光腳的鞋閱讀 46,547評(píng)論 2 7
  • Cookie技術(shù)是客戶端的解決方案讹弯,Cookie就是由服務(wù)器發(fā)給客戶端的特殊信息,而這些信息以文本文件的方式存放在...
    饑人谷_陸邈閱讀 1,453評(píng)論 1 5
  • * __proto__和prototype 每個(gè)對(duì)象都有__proto__屋群,但只有函數(shù)有prototype。當(dāng)你創(chuàng)...
    TangPiece閱讀 221評(píng)論 0 1
  • 理解session和cookie之間的聯(lián)系 當(dāng)程序需要為客戶端創(chuàng)建一個(gè)session前,會(huì)先在客戶端發(fā)送過(guò)來(lái)的消息...
    涼拌姨媽好吃閱讀 3,606評(píng)論 2 4
  • HTTP cookie(也稱為web cookie,網(wǎng)絡(luò)cookie,瀏覽器cookie或者簡(jiǎn)稱cookie)是網(wǎng)...
    留七七閱讀 17,837評(píng)論 2 71