據(jù)我對(duì)cookie誕生背景的了解,cookie是由網(wǎng)景公司創(chuàng)建的,目的就是將用戶的數(shù)據(jù)儲(chǔ)存在客戶端上。伴隨的HTML5的出現(xiàn),現(xiàn)在又有另外一個(gè)解決數(shù)據(jù)離線儲(chǔ)存的方案,就是HTML5中的Web storage,其中兩個(gè)重要對(duì)象sessionStorage和localStorage可以解決瀏覽器sessions和長(zhǎng)期儲(chǔ)存數(shù)據(jù)的目的,并且兼容性還不錯(cuò),IE8+以上瀏覽器都支持。

那我們直接學(xué)習(xí)Web storage不就可以了?個(gè)人認(rèn)為,這不是一個(gè)很好的學(xué)習(xí)方法。Web Storage的出現(xiàn)主要還是因?yàn)閏ookie的一些小毛病不能夠滿足前端工程師日常開發(fā)而被加入到HTML5中作為新的API的。本質(zhì)上說(shuō),localStorage和sessionStorage實(shí)現(xiàn)的本質(zhì)與cookie是一樣的。所以在接觸之前,先熟悉并且掌握cookie對(duì)于Web storage的學(xué)習(xí)還有很大的幫助。

這篇文章會(huì)涉及的內(nèi)容與技術(shù):

  • module bundler:webpack
  • javascirpt如何實(shí)現(xiàn)讀取,寫入,刪除Cookie
  • js-cookie實(shí)現(xiàn)讀取,寫入,刪除Cookie

cookie定義

cookie其實(shí)就是服務(wù)器保存在瀏覽器的一小段文本信息。怎么保存呢?瀏覽器在向服務(wù)器發(fā)送一個(gè)http請(qǐng)求時(shí),會(huì)在發(fā)送請(qǐng)求的首部字段中添加Cookie字段,并且附上相應(yīng)的key,value。服務(wù)器接收到請(qǐng)求并且正確返回響應(yīng)的時(shí)候,會(huì)在響應(yīng)的頭部字段中添加Set-cookie字段。這時(shí)候就完成了一次數(shù)據(jù)儲(chǔ)存的操作。當(dāng)我們關(guān)閉瀏覽器并且再次打開的時(shí)候,相應(yīng)需要存儲(chǔ)的信息就會(huì)在expires指定的期限內(nèi)存儲(chǔ)下來(lái)。

簡(jiǎn)單的說(shuō),就是:

  • 當(dāng)用戶訪問(wèn)web頁(yè)面時(shí),他的記錄可以保存在cookie中。
  • 在用戶下一次訪問(wèn)同一頁(yè)面時(shí),可以在cookie中讀取用戶的訪問(wèn)記錄。

cookie特點(diǎn)

  • 每個(gè)cookie的大小不能超過(guò)4KB。
  • 通過(guò)HTTP協(xié)議的方式來(lái)存儲(chǔ)數(shù)據(jù)。
  • cookie會(huì)影響同一域名下的根目錄及其子目錄。舉例來(lái)說(shuō),如果當(dāng)前URI是keithchou.github.io,如果設(shè)置path為'/'或者不設(shè)置(默認(rèn)值為/),這個(gè)cookie對(duì)該域名的根路徑和它的所有子路徑都有效。如果path設(shè)置為/music,那么這個(gè)cookie只有在訪問(wèn)keithchou.github/music及其子路徑才有效。
  • 同源政策。瀏覽器的同源政策規(guī)定,兩個(gè)網(wǎng)址只要域名和端口相同,就可以共享cookie。注意,這里不要求協(xié)議相同。也就是說(shuō),'http://keithchou.com'設(shè)置的cookie,可以被'https://keithchou.com'讀取。

cookie屬性

cookie常用的屬性有:

  • value
  • domain
  • path
  • expires
  • secure
  • HttpOnly

屬性的具體內(nèi)容就不再贅述了,屬性都比較簡(jiǎn)單。

cookie實(shí)現(xiàn)

接下來(lái)想說(shuō)說(shuō)兩種方式來(lái)實(shí)現(xiàn)cookie。一是原生javascript實(shí)現(xiàn)cookie,二是通過(guò)js-cookie這個(gè)小框架來(lái)實(shí)現(xiàn)cookie。

javascript實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)

基本的cookie操作有三種:讀取、寫入和刪除。javascript操作cookie主要是通過(guò)document.cookie來(lái)實(shí)現(xiàn)的。

document.cookie的一大特點(diǎn)是,可以讀取所有的Cookie,但是每次寫入cookie的時(shí)候只能一條一條寫入。看一個(gè)從百度獲取的cookie。


        		

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式