概述
雖說在現(xiàn)代Web開發(fā)過程中討論Cookie有些不合時(shí)宜,但是這是開發(fā)人員如今可以使用的最古老、最穩(wěn)定的客戶端存儲(chǔ)形式。當(dāng)然,我們并不推薦使用Cookie,只是說它是一種選擇。
Cookie于1994年在Netscape瀏覽器的Beta版本中被引入。它通過隨HTTP請(qǐng)求和響應(yīng)一起發(fā)送的HTTP header值發(fā)揮作用。眾所周知,每當(dāng)瀏覽器請(qǐng)求一個(gè)資源,就會(huì)有一組header隨請(qǐng)求一起發(fā)送。那些header包含各種類型的數(shù)據(jù),其中包括有關(guān)瀏覽器的信息以及它需要的數(shù)據(jù)形式。反過來,服務(wù)器也會(huì)往回發(fā)送header。
Cookie使用HTTP header發(fā)送,具體來說是名為Cookie的HTTP header,由瀏覽器發(fā)送到服務(wù)器,又從服務(wù)器發(fā)送到瀏覽器。你會(huì)發(fā)現(xiàn)這里有個(gè)問題。如果使用客戶端存儲(chǔ)的一個(gè)好處是不用通過網(wǎng)絡(luò)發(fā)送數(shù)據(jù),那么來回發(fā)送Cookie不是反其道而行之嗎?這也是上面提到的不建議使用Cookie的另一個(gè)原因。
默認(rèn)情況下,瀏覽器沒有限制可以擁有的Cookie數(shù)量。以前,每個(gè)域名最多只能有20個(gè)Cookie,但如今的瀏覽器似乎丟掉了這個(gè)限制。
Cookie對(duì)應(yīng)唯一的域名。這意味著在foo.com上設(shè)置的Cookie值不能用于goo.com.這樣很好,因?yàn)槟悴粫?huì)希望其他網(wǎng)站影響你在自己的網(wǎng)站上使用Cookie。
Cookie也可以對(duì)應(yīng)唯一的子域名。例如,app.foo.com是Foo網(wǎng)站的一個(gè)獨(dú)立的子域名。你可以創(chuàng)建只有app.foo.com可以讀取的Cookie,也可以創(chuàng)建www.foo.com和app.foo.com都可以讀取的Cookie。
更復(fù)雜的做法是創(chuàng)建只對(duì)特定路徑有效的Cookie。所以,你可能希望創(chuàng)建只有foo.com/app可見的Cookie。
最后,你可以創(chuàng)建只對(duì)網(wǎng)站的安全(HTTPS)版本有效的Cookie。顯然,選用哪種方案取決于應(yīng)用程序的用途,以及你認(rèn)為哪里需要Cookie值。
除了設(shè)置Cookie出現(xiàn)的地方,還可以指定Cookie的有效時(shí)間。
只在當(dāng)前會(huì)話期間存在的Cookie(從根本上說是直到瀏覽器關(guān)閉)
永遠(yuǎn)存在的Cookie
存在特定時(shí)長(zhǎng)的Cookie
特定時(shí)間點(diǎn)之后失效的Cookie
使用方法Cookie沒有API。要使用Cookie,只需在代碼中訪問document.cookie對(duì)象。例如,可以像下面一樣創(chuàng)建一個(gè)Cookie.
document.cookie = "name=zuckjet"
Cookie值必須符合URL編碼規(guī)則,這意味著如果想動(dòng)態(tài)定義Cookie,那么就需要使用類似encodeURIComponent的輔助函數(shù)。
下面這段代碼世家還是那個(gè)創(chuàng)建了兩個(gè)Cookie,而不是一個(gè)。
document.cookie = "name=zuckberg"; document.cookie = "age=18";
在Cookie值后面使用一個(gè)分號(hào)可以追加元數(shù)據(jù):
documen.cookie = "name=zuckjet;expires=xxx;domain=xxx"
當(dāng)我們不指定元數(shù)據(jù)時(shí),Cookie默認(rèn)只對(duì)當(dāng)前域名的當(dāng)前路徑有效,有效期是當(dāng)前會(huì)話。
讀取Cookie讀取Cookie多少簡(jiǎn)單一些--這取決于你對(duì)字符串的解析程度。沒有API可以用來獲取一個(gè)Cookie。不過,你只需要簡(jiǎn)單地讀取document.cookie就可以了。這樣你可以獲取特定網(wǎng)站的Cookie。比如,segmentfault的cookie值如下:
讀取一個(gè)Cookie就意味著將字符串解析成多個(gè)有分號(hào)分隔的部分。另外還要注意,你無法訪問任何元數(shù)據(jù)。通過document.cookie值無法獲取這類信息。
刪除Cookie要?jiǎng)h除Cookie,只需要將其過期時(shí)間設(shè)置成過去的時(shí)間即可。從技術(shù)上講,這個(gè)時(shí)間值無關(guān)緊要,但名稱必須與你想要?jiǎng)h除的Cookie名稱一致。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/107475.html
摘要:保存中文上面我們的例子保存的是英文字符,下面我們來看下保存中文字符會(huì)怎么樣。出異常了中文屬于字符,英文數(shù)據(jù)字符,中文占個(gè)字符或者個(gè)字符,英文占個(gè)字符。如果為,則表示刪除該。的值規(guī)定為域名的隱私安全機(jī)制決定是不可跨域名的。 什么是會(huì)話技術(shù) 基本概念: 指用戶開一個(gè)瀏覽器,訪問一個(gè)網(wǎng)站,只要不關(guān)閉該瀏覽器,不管該用戶點(diǎn)擊多少個(gè)超鏈接,訪問多少資源,直到用戶關(guān)閉瀏覽器,整個(gè)這個(gè)過程我們稱為一...
摘要:最近在研究,學(xué)著使用,開始不會(huì)用,就百度了一下,沒有百度到特別完整的解答。查閱了的,綜合了網(wǎng)友的博客,解讀了的源碼,以及使用和驗(yàn)證,終于明白了中的使用。默認(rèn)為網(wǎng)站域名過期時(shí)間,類型為。使用插件,后續(xù)代碼直接使用或者即可 最近在研究express,學(xué)著使用cookie,開始不會(huì)用,就百度了一下,沒有百度到特別完整的解答。查閱了express的API,綜合了網(wǎng)友的博客,解讀了cookie-...
摘要:首先先來一段總結(jié)用于本地?cái)?shù)據(jù)存儲(chǔ),出現(xiàn)在服務(wù)器和瀏覽器交互的響應(yīng)頭部和請(qǐng)求頭部中,受到單域名下的數(shù)量單個(gè)大小性能安全限制。子技術(shù)的出現(xiàn)緩解了單域名下的數(shù)量限制,關(guān)于子有一整套工具函數(shù)可以使用。 前言 本篇主要介紹Cookie技術(shù)的讀書總結(jié),但是我認(rèn)為邏輯上最好會(huì)和Web Storage技術(shù)放在一起進(jìn)行對(duì)比,因此后續(xù)會(huì)再總結(jié)一篇關(guān)于WEB存儲(chǔ)的姊妹總結(jié),敬請(qǐng)期待。 首先先來一段總結(jié):Co...
摘要:首先先來一段總結(jié)用于本地?cái)?shù)據(jù)存儲(chǔ),出現(xiàn)在服務(wù)器和瀏覽器交互的響應(yīng)頭部和請(qǐng)求頭部中,受到單域名下的數(shù)量單個(gè)大小性能安全限制。子技術(shù)的出現(xiàn)緩解了單域名下的數(shù)量限制,關(guān)于子有一整套工具函數(shù)可以使用。 前言 本篇主要介紹Cookie技術(shù)的讀書總結(jié),但是我認(rèn)為邏輯上最好會(huì)和Web Storage技術(shù)放在一起進(jìn)行對(duì)比,因此后續(xù)會(huì)再總結(jié)一篇關(guān)于WEB存儲(chǔ)的姊妹總結(jié),敬請(qǐng)期待。 首先先來一段總結(jié):Co...
閱讀 2202·2021-10-18 13:28
閱讀 2512·2021-10-11 10:59
閱讀 2340·2019-08-29 15:06
閱讀 1132·2019-08-26 13:54
閱讀 808·2019-08-26 13:52
閱讀 3149·2019-08-26 12:02
閱讀 2999·2019-08-26 11:44
閱讀 2511·2019-08-26 10:56