資源描述:
《第7章 用cookie在客戶端保存》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第7章用Cookie在客戶端保存信息前面的章節(jié)從各個(gè)方面講述了JavaScript的基礎(chǔ)知識(shí)。從本章開始,將進(jìn)入JavaScript針對(duì)web頁(yè)面控制的部分。在制作網(wǎng)頁(yè)的時(shí)候,常常需要使用表單和用戶交互。而有時(shí)表單項(xiàng)目很多,用戶填寫了很久的時(shí)間,卻因?yàn)橐馔猓ǔ瑫r(shí)、誤操作...)等原因離開了該頁(yè)面,再次回到表單頁(yè)面時(shí)不得不重填所有的項(xiàng)目,這會(huì)給用戶非常難以忍受的體驗(yàn)。那么一個(gè)理想的解決方案就是將用戶的表達(dá)內(nèi)容保存在本地,當(dāng)頁(yè)面載入時(shí)重載這些數(shù)據(jù)即可。7.1示例:用Cookie實(shí)現(xiàn)可以記住內(nèi)容的表單代碼就是一個(gè)可以記住用戶輸入內(nèi)容的表單。代碼說(shuō)明:7.2什么是Cook
2、ie“Cookie”來(lái)自于英文,原意是“小甜餅”。維基百科上的定義是:“Cookie,有時(shí)也用其復(fù)數(shù)形式Cookies,指某些網(wǎng)站為了辨別用戶身份而儲(chǔ)存在用戶本地終端上的數(shù)據(jù)”。簡(jiǎn)單來(lái)說(shuō),Cookie就是服務(wù)器暫存放在瀏覽者電腦里的資料,好讓服務(wù)器用來(lái)辨認(rèn)其計(jì)算機(jī)。在瀏覽網(wǎng)站的時(shí)候,Web服務(wù)器會(huì)先送一小小資料放在訪問(wèn)者的計(jì)算機(jī)上,這段資料就是Cookie。當(dāng)下次用戶再訪問(wèn)同一個(gè)網(wǎng)站,Web服務(wù)器會(huì)先看看有沒(méi)有其上次留下的Cookie資料,有的話,就會(huì)依據(jù)Cookie里的內(nèi)容來(lái)判斷使用者,送出特定的網(wǎng)頁(yè)內(nèi)容。Cookie看上去很復(fù)雜,那么其存在的價(jià)值是什么?為什么
3、Web服務(wù)器不可以直接識(shí)別用戶的電腦?要理解這些,必須先理解HTTP協(xié)議。7.2.1HTTP協(xié)議簡(jiǎn)介用戶在瀏覽網(wǎng)頁(yè)的時(shí)候,瀏覽器的地址欄里輸入的網(wǎng)站地址叫做統(tǒng)一資源定位符(URL—UniformResourceLocator)。就像每家每戶都有一個(gè)門牌地址一樣,每個(gè)網(wǎng)頁(yè)也都有一個(gè)Internet地址,這個(gè)地址就是URL。瀏覽器通過(guò)超文本傳輸協(xié)議(HTTP),將Web服務(wù)器上站點(diǎn)的網(wǎng)頁(yè)代碼提取出來(lái),并翻譯成漂亮的網(wǎng)頁(yè)。因此在認(rèn)識(shí)HTTP協(xié)議之前,有必要先弄清楚URL的組成,例如“http://www.intel.com/cd/corporate/home/apac/
4、zho/324811.htm”。其含義如下:(1)http://:代表超文本傳輸協(xié)議,通知intel.com服務(wù)器顯示W(wǎng)eb頁(yè),通常不用輸入(2)www:代表一個(gè)Web(萬(wàn)維網(wǎng))服務(wù)器(3)intel.com/:這是裝有網(wǎng)頁(yè)的服務(wù)器的域名,或站點(diǎn)服務(wù)器的名稱(4)cd/corporate/home/apac/zho/:為該服務(wù)器上的路徑,就好像一般個(gè)人電腦系統(tǒng)中的文件夾(5)324811.htm:324811.htm是文件夾中的一個(gè)文件(HTML網(wǎng)頁(yè))7.2.2Cookie存在的意義正是由于HTTP協(xié)議有著非連接和無(wú)狀態(tài)的特性,使得服務(wù)器并不能夠區(qū)分出每次訪問(wèn)者之
5、間的不同。比如用戶A和用戶B先后請(qǐng)求一個(gè)頁(yè)面,服務(wù)器并不能判斷出這兩次請(qǐng)求是來(lái)自于不同的用戶,還是來(lái)自于同一個(gè)用戶。那么在實(shí)際的網(wǎng)絡(luò)分布式應(yīng)用中,客戶身份的確認(rèn)就成為一個(gè)很大的困擾。為了解決這個(gè)問(wèn)題,人們?cè)贖TTP協(xié)議的基礎(chǔ)上擴(kuò)展出Cookie這個(gè)有力的工具。Cookie是一小段文本信息,被保存在客戶端。每次瀏覽器訪問(wèn)服務(wù)器的時(shí)候,會(huì)自動(dòng)的提交這段信息給服務(wù)器,服務(wù)器上的可執(zhí)行程序(ASP、PHP或者其他的程序)會(huì)獲得這段信息,并且根據(jù)該信息進(jìn)行相應(yīng)的處理。7.2.3Cookie的優(yōu)點(diǎn)和限制Cookie協(xié)助HTTP協(xié)議,使得客戶端和服務(wù)器之間的通信有了“狀態(tài)”,給
6、用戶和網(wǎng)站帶來(lái)了很多的好處。舉例來(lái)說(shuō),Cookie可以實(shí)現(xiàn)很多非常實(shí)用的應(yīng)用:(1)Cookie能使站點(diǎn)跟蹤特定訪問(wèn)者的訪問(wèn)次數(shù)、最后訪問(wèn)時(shí)間和訪問(wèn)者進(jìn)入站點(diǎn)的路徑。(2)Cookie能告訴在線廣告商廣告被點(diǎn)擊的次數(shù),從而可以更精確的投放廣告。(3)Cookie有效期限未到時(shí),Cookie能使用戶在不鍵入密碼和用戶名的情況下進(jìn)入曾經(jīng)瀏覽過(guò)的一些站點(diǎn)。(4)Cookie能幫助站點(diǎn)統(tǒng)計(jì)用戶個(gè)人資料以實(shí)現(xiàn)各種各樣的個(gè)性化服務(wù)。7.3把輸入框的內(nèi)容保存在客戶端-使用Cookie雖然大多數(shù)情況下,Cookie都是由服務(wù)器端的應(yīng)用程序(如ASP、PHP和Perl等)操作和處理
7、的。但JavaScript也提供了對(duì)Cookie的操作控制機(jī)制。7.3.1Cookie的保存和讀取在JavaScript的文檔對(duì)象模型(DOM)中,Cookie對(duì)象是從屬于文檔對(duì)象(window.document)的子對(duì)象。其表現(xiàn)行為類似于一個(gè)字符串對(duì)象。如前面所說(shuō),Cookie保存的是文本信息,因此JavaScript中常將字符串或數(shù)值型變量的內(nèi)容保存于其中。將信息保存在Cookie中的語(yǔ)法很簡(jiǎn)單,即直接將字符串賦值給該對(duì)象:window.document.cookie=“需要保存的信息”window.document.cookie=”關(guān)鍵字=值”獲取Cooki
8、e對(duì)象中保