cookie剔难、webStorage

1. cookie

1.1 cookie是什么

cookie是當(dāng)我們?yōu)g覽某網(wǎng)站的時(shí)候,由web服務(wù)器存儲(chǔ)在我們機(jī)器硬盤上的一個(gè)小的文本文件箭养。其中記錄了我們的用戶名慕嚷、密碼、瀏覽的網(wǎng)頁毕泌、停留的時(shí)間等等信息喝检。如果我們?cè)俅蝸淼竭@個(gè)網(wǎng)站時(shí),web服務(wù)器會(huì)先看看有沒有它上次留下來的cookie撼泛,如果有挠说,會(huì)讀取cookie中的內(nèi)容,來判斷使用者愿题,比如可以讓我們不用輸入ID损俭、密碼就直接登錄等。

當(dāng)客戶端要發(fā)送http請(qǐng)求時(shí)潘酗,瀏覽器會(huì)先檢查下是否有對(duì)應(yīng)的cookie杆兵,如果有,則自動(dòng)地添加在request header中的cookie字段仔夺。注意琐脏,每一次的http請(qǐng)求,如果有cookie缸兔,瀏覽器都會(huì)自動(dòng)帶上cookie發(fā)送給服務(wù)端日裙。

1.2 cookie的屬性

(1)Expires\Max Age

設(shè)置cookie在什么時(shí)間內(nèi)有效。Expires就是失效日期惰蜜,它必須是GMT格式的時(shí)間(可以通過 new Date().toGMTString() 或者 new Date().toUTCString() 來獲得)昂拂。對(duì)于失效的cookie瀏覽器會(huì)清空汗销。如果沒有設(shè)置該選項(xiàng)帘撰,這樣的cookie就稱為會(huì)話cookie。它存在于內(nèi)存中潮秘,當(dāng)會(huì)話結(jié)束樟结,也就是瀏覽器關(guān)閉時(shí)养交,cookie消失。

補(bǔ)充:Expires 是 http/1.0 協(xié)議中的選項(xiàng)瓢宦,在 http/1.1 協(xié)議中 Expires 已經(jīng)由 Max Age 選項(xiàng)代替碎连。Expires的值是一個(gè)時(shí)間點(diǎn)(cookie失效時(shí)刻= Expires),而Max age的值是一個(gè)以秒為單位時(shí)間段(cookie失效時(shí)刻= 創(chuàng)建時(shí)刻+ Max age)驮履。

(2)Domain鱼辙、Path

Domain 是域名廉嚼,Path 是路徑,兩者加起來就構(gòu)成了 URL 倒戏,Domain 和 Path 一起來限制 cookie 能被哪些 URL 訪問怠噪。即請(qǐng)求的URL是 Domain 或其子域、且 URL 的路徑是 Path 或子路徑杜跷,則都可以訪問該 cookie傍念。

補(bǔ)充:發(fā)生跨域 xhr 請(qǐng)求時(shí),即使請(qǐng)求 URL 的域名和路徑都滿足 cookie 的 Domain 和 Path 葛闷,默認(rèn)情況下 cookie 也不會(huì)自動(dòng)被添加到請(qǐng)求頭部中憋槐。

(3)Size

cookie 的大小

(4)Secure

設(shè)置 cookie 只在確保安全的請(qǐng)求中才會(huì)發(fā)送。當(dāng)請(qǐng)求是 HTTPS 或者其他安全協(xié)議時(shí)淑趾,包含Secure 選項(xiàng)的 cookie 才能被發(fā)送至服務(wù)器阳仔。

補(bǔ)充:如果想在客戶端即網(wǎng)頁中通過 js 去設(shè)置Secure類型的 cookie,必須保證網(wǎng)頁是https協(xié)議的扣泊。在http協(xié)議的網(wǎng)頁中是無法設(shè)置secure類型cookie的近范。

(5)httponly

這個(gè)選項(xiàng)用來設(shè)置cookie是否能通過 js 去訪問。默認(rèn)情況下延蟹,cookie不會(huì)帶httpOnly選項(xiàng)(即為空)顺又,所以默認(rèn)情況下,客戶端是可以通過js代碼去訪問(包括讀取等孵、修改稚照、刪除等)這個(gè)cookie的。當(dāng)cookie帶httpOnly選項(xiàng)時(shí)俯萌,客戶端則無法通過js代碼去訪問(包括讀取果录、修改、刪除等)這個(gè)cookie咐熙。

補(bǔ)充:只要是httponly類型的,在控制臺(tái)通過document.cookie是獲取不到的弱恒,也不能進(jìn)行修改。

1.3 cookie 的設(shè)置棋恼、讀取返弹、刪除方法

(1)服務(wù)端設(shè)置 cookie :客戶端第一次向服務(wù)端請(qǐng)求時(shí),在相應(yīng)的請(qǐng)求頭中就有 set-cookie 字段爪飘,用來標(biāo)識(shí)哪個(gè)用戶义起。服務(wù)端可以設(shè)置 cookie 的所有選項(xiàng)。

(2)客戶端設(shè)置 cookie :沒有特定的方法师崎,需要自己封裝默终。document.cookie可以獲得所有 cookie ,也可以通過 document.cookie="name=Dobby"簡(jiǎn)單設(shè)置,一次只能設(shè)置一個(gè)齐蔽。

簡(jiǎn)單設(shè)置cookie:

function setCookie ( name, value, iDay ) {

? ? ?let oDate = new Date();

? ??oDate.setDate ( oDate.getDate() + iDay );

? ??document.cookie = name + "=" + value + ";expires=" + oDate;

}?

讀取cookie:

funcion getCookie ( name ){

? ? let arr = document.cookie.spile ( ';' );

? ? for( let i = 0; i < arr.length; i ++ ){

? ? ? ? let arr2 = arr[i].split( '=' );

? ? ? ? if( arr2[0] == name ){

? ? ? ? ? ? return arr2[1];

? ? ? ? }

? ? ? ? return ' ';

}

刪除cookie:

function removeCookie( name ){

? ? setCookie( name, '1', -1 );//第二個(gè)value值隨便設(shè)個(gè)值两疚,第三個(gè)值設(shè)為-1表示: 昨天就過期了,刪除含滴。

}

1.4 cookie 和 session 的區(qū)別

cookie 是存在客戶端瀏覽器上诱渤,session 會(huì)話存在服務(wù)器上。會(huì)話對(duì)象用來存儲(chǔ)特定用戶會(huì)話所需的屬性及配置信息谈况。當(dāng)用戶請(qǐng)求來自應(yīng)用程序的 web 頁時(shí)源哩,如果該用戶還沒有會(huì)話,則服務(wù)器將自動(dòng)創(chuàng)建一個(gè)會(huì)話對(duì)象鸦做。當(dāng)會(huì)話過期或者被放棄后,服務(wù)器將終止該會(huì)話谓着。

當(dāng) cookie 失效泼诱、session 過期時(shí),就需要重新登錄了赊锚。

2. 瀏覽器本地存儲(chǔ)

2.1 localStorage治筒、sessionStorage

sessionStorage 用于本地存儲(chǔ)一個(gè)會(huì)話中的數(shù)據(jù),這些數(shù)據(jù)只有在同一個(gè)會(huì)話中的頁面才能訪問舷蒲,并且當(dāng)會(huì)話結(jié)束后耸袜,數(shù)據(jù)也隨之銷毀。所以 sessionStorage 僅僅是會(huì)話級(jí)別的存儲(chǔ)牲平,而不是一種持久化的本地存儲(chǔ)堤框。

localStorage 是持久化的本地存儲(chǔ),除非是通過js刪除纵柿,或者清除瀏覽器緩存蜈抓,否則數(shù)據(jù)是永遠(yuǎn)不會(huì)過期的。

2.2 webstorage 與 cookie 的區(qū)別

(1) web storages 和 cookie 的作用不同昂儒,web storage 是用于本地大容量存儲(chǔ)數(shù)據(jù)( web storage 的存儲(chǔ)量大到 5MB);而 cookie 是用于客戶端和服務(wù)端間的信息傳遞沟使;

(2) web storage 有 setItem、getItem渊跋、removeItem腊嗡、clear 等方法,cookie 需要我們自己來封裝setCookie拾酝、getCookie燕少、removeCookie。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蒿囤,一起剝皮案震驚了整個(gè)濱河市棺亭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖镶摘,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗽桩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡凄敢,警方通過查閱死者的電腦和手機(jī)碌冶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涝缝,“玉大人扑庞,你說我怎么就攤上這事【艽” “怎么了罐氨?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)滩援。 經(jīng)常有香客問我栅隐,道長(zhǎng),這世上最難降的妖魔是什么玩徊? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任租悄,我火速辦了婚禮,結(jié)果婚禮上恩袱,老公的妹妹穿的比我還像新娘泣棋。我一直安慰自己,他們只是感情好畔塔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布潭辈。 她就那樣靜靜地躺著,像睡著了一般澈吨。 火紅的嫁衣襯著肌膚如雪萎胰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天棚辽,我揣著相機(jī)與錄音技竟,去河邊找鬼。 笑死屈藐,一個(gè)胖子當(dāng)著我的面吹牛榔组,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播联逻,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼搓扯,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了包归?” 一聲冷哼從身側(cè)響起锨推,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后换可,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體椎椰,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年沾鳄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了慨飘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡译荞,死狀恐怖瓤的,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吞歼,我是刑警寧澤圈膏,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站篙骡,受9級(jí)特大地震影響稽坤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜医增,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望老虫。 院中可真熱鬧叶骨,春花似錦、人聲如沸祈匙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽夺欲。三九已至跪帝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間些阅,已是汗流浹背伞剑。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留市埋,地道東北人黎泣。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像缤谎,于是被迫代替她去往敵國(guó)和親抒倚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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