官术网_书友最值得收藏!

5.1 Cookie的概念和特性

Cookie是設(shè)計(jì)交互式網(wǎng)頁(yè)的一項(xiàng)重要技術(shù),它可以將一些簡(jiǎn)短的數(shù)據(jù)存儲(chǔ)在用戶的計(jì)算機(jī)上,這些存放在用戶計(jì)算機(jī)上的變量數(shù)據(jù),稱為Cookie。當(dāng)瀏覽器向服務(wù)器提出網(wǎng)頁(yè)瀏覽請(qǐng)求時(shí),服務(wù)器根據(jù)存儲(chǔ)在用戶計(jì)算機(jī)上的Cookie內(nèi)容,針對(duì)此瀏覽器顯示其專門(mén)的內(nèi)容。

5.1.1 什么是Cookie

Cookie原意是指就著牛奶一起吃的點(diǎn)心。然而,在互聯(lián)網(wǎng)內(nèi),Cookie這個(gè)詞有了完全不同的意思。那么Cookie到底是什么呢?Cookie是小量信息,由網(wǎng)絡(luò)服務(wù)器發(fā)送出來(lái)以存儲(chǔ)在網(wǎng)絡(luò)瀏覽器上,從而下次這位獨(dú)一無(wú)二的訪客又回到該網(wǎng)絡(luò)服務(wù)器時(shí),可從該瀏覽器讀回此信息。讓瀏覽器記住這位訪客的特定信息,如上次訪問(wèn)的位置、花費(fèi)的時(shí)間或用戶首選項(xiàng)(如樣式表),這是很有用的。Cookie是一個(gè)存儲(chǔ)在瀏覽器目錄的文本文件,當(dāng)瀏覽器運(yùn)行時(shí),存儲(chǔ)在RAM中。一旦用戶從該網(wǎng)站或網(wǎng)絡(luò)服務(wù)器退出,Cookie也可存儲(chǔ)在計(jì)算機(jī)的硬驅(qū)上。當(dāng)訪客結(jié)束其瀏覽器對(duì)話時(shí),即終止所有的Cookie。Cookie是在HTTP協(xié)議下,服務(wù)器或腳本可以維護(hù)客戶工作站上信息的一種方式。

目前有些Cookie是臨時(shí)的,有些則是持續(xù)的。臨時(shí)的Cookie只在瀏覽器上保存一段規(guī)定的時(shí)間,一旦超過(guò)規(guī)定的時(shí)間,該Cookie就會(huì)被系統(tǒng)清除。持續(xù)的Cookie則保存在用戶的Cookie文件中,下一次用戶返回時(shí),仍然可以對(duì)它進(jìn)行調(diào)用。在Cookie文件中保存Cookie,有些用戶擔(dān)心Cookie中的用戶信息被一些別有用心的人竊取,而造成一定的損害。其實(shí),網(wǎng)站以外的用戶無(wú)法跨過(guò)網(wǎng)站來(lái)獲得Cookie信息。如果因?yàn)檫@種擔(dān)心而屏蔽Cookie,肯定會(huì)因此拒絕訪問(wèn)許多站點(diǎn)頁(yè)面。因?yàn)?,?dāng)今有許多Web站點(diǎn)開(kāi)發(fā)人員使用Cookie技術(shù),例如Session對(duì)象的使用就離不開(kāi)Cookie的支持。

Cookie必須在HTML文件的內(nèi)容輸出之前設(shè)置;不同的瀏覽器(如Netscape Navigator、Internet Explorer)對(duì)Cookie的處理不一致,使用時(shí)一定要考慮;客戶端用戶如果設(shè)置禁止Cookie,則Cookie不能建立。一個(gè)瀏覽器能創(chuàng)建的Cookie數(shù)量最多為300個(gè),并且每個(gè)不能超過(guò)4KB,每個(gè)Web站點(diǎn)能設(shè)置的Cookie總數(shù)不能超過(guò)20個(gè)。

Cookie是由Web服務(wù)器保存在用戶瀏覽器(客戶端)上的小文本文件,它可以包含有關(guān)用戶的信息。無(wú)論何時(shí)用戶鏈接到服務(wù)器,Web站點(diǎn)都可以訪問(wèn)Cookie信息。通過(guò)讓服務(wù)器讀取它原先保存到客戶端的信息,網(wǎng)站能夠?yàn)闉g覽者提供一系列的方便,例如在線交易過(guò)程中標(biāo)識(shí)用戶身份、安全需求不高的場(chǎng)合避免用戶重復(fù)輸入名字和密碼、門(mén)戶網(wǎng)站的主頁(yè)制定、有針對(duì)性地投放廣告等。

Cookie數(shù)據(jù)存儲(chǔ)的功能由瀏覽器本身所提供,因此,Cookie功能必須有瀏覽器的支持才能實(shí)現(xiàn),一般通用的瀏覽器(如IE)都支持此功能。

當(dāng)用戶打開(kāi)的網(wǎng)頁(yè)中包含Cookie程序代碼,此時(shí)服務(wù)器端會(huì)建立Cookie數(shù)據(jù),然后將這個(gè)Cookie傳送到客戶端用戶的計(jì)算機(jī)上,圖5-1所示為Cookie示意圖。

圖5-1 Cookie示意圖

當(dāng)Cookie的數(shù)據(jù)傳送至客戶端的計(jì)算機(jī)后,便存儲(chǔ)在瀏覽器當(dāng)中,此時(shí)服務(wù)器端的網(wǎng)頁(yè)都可以訪問(wèn)這個(gè)Cookie的數(shù)據(jù)內(nèi)容,而當(dāng)用戶關(guān)閉瀏覽器的時(shí)候,Cookie的數(shù)據(jù)便會(huì)消失。

若服務(wù)器在建立Cookie時(shí)設(shè)置了Cookie的存在時(shí)間期限,則用戶在關(guān)閉瀏覽器后,Cookie的數(shù)據(jù)會(huì)以文本文件存儲(chǔ)在用戶的計(jì)算機(jī)上,只要在設(shè)置的時(shí)間期限內(nèi),當(dāng)用戶連接網(wǎng)頁(yè)時(shí),服務(wù)器端的網(wǎng)頁(yè)均可使用先前Cookie的內(nèi)容,等過(guò)了所設(shè)置的期限,Cookie中的數(shù)據(jù)便會(huì)自動(dòng)被刪除。

5.1.2 Cookie的常見(jiàn)用途

Cookie最根本的用途是幫助Web站點(diǎn)保存有關(guān)訪問(wèn)者的信息。更概括地說(shuō),Cookie是一種保持Web應(yīng)用程序連續(xù)性(即執(zhí)行“狀態(tài)管理”)的方法。瀏覽器和Web服務(wù)器除了在短暫的實(shí)際信息交換階段以外總是斷開(kāi)的,而用戶向Web服務(wù)器發(fā)送的每個(gè)請(qǐng)求都是單獨(dú)處理的,與其他所有請(qǐng)求無(wú)關(guān)。然而在大多數(shù)情況下,都有必要讓W(xué)eb服務(wù)器在用戶請(qǐng)求某個(gè)頁(yè)面時(shí)對(duì)其進(jìn)行識(shí)別。例如,購(gòu)物站點(diǎn)上的Web服務(wù)器跟蹤每個(gè)購(gòu)物者,以便站點(diǎn)能夠管理購(gòu)物車(chē)和其他與用戶相關(guān)的信息。因此Cookie的作用就類似于名片,它提供了相關(guān)的標(biāo)識(shí)信息,可以幫助應(yīng)用程序確定如何繼續(xù)執(zhí)行。Cookie是用戶瀏覽某網(wǎng)站時(shí),網(wǎng)站存儲(chǔ)在用戶機(jī)器上的一個(gè)小文本文件,它記錄了用戶的用戶ID、密碼、瀏覽過(guò)的網(wǎng)頁(yè)、停留的時(shí)間等信息,當(dāng)用戶在某個(gè)網(wǎng)站注冊(cè)后,就會(huì)收到一個(gè)唯一用戶ID的Cookie。當(dāng)用戶再次來(lái)到該網(wǎng)站時(shí),網(wǎng)站通過(guò)讀取Cookie,這個(gè)用戶ID會(huì)自動(dòng)返回,服務(wù)器對(duì)它進(jìn)行檢查,確定它是否為注冊(cè)用戶且選擇了自動(dòng)登錄,這樣,用戶無(wú)須給出明確的用戶名和密碼,就可以訪問(wèn)服務(wù)器上的資源;網(wǎng)站可以使用Cookie記錄用戶的意愿。對(duì)于簡(jiǎn)單的設(shè)置,網(wǎng)站可以直接將頁(yè)面的設(shè)置存儲(chǔ)在Cookie中完成定制。然而對(duì)于更復(fù)雜的定制,網(wǎng)站只需將一個(gè)唯一的標(biāo)識(shí)符發(fā)送給用戶,由服務(wù)器端的數(shù)據(jù)庫(kù)存儲(chǔ)每個(gè)標(biāo)識(shí)符對(duì)應(yīng)的頁(yè)面設(shè)置做出相應(yīng)的動(dòng)作,如在頁(yè)面顯示“歡迎你”的標(biāo)語(yǔ)等。

幾乎所有的網(wǎng)站設(shè)計(jì)者在進(jìn)行網(wǎng)站設(shè)計(jì)時(shí)都使用了Cookie,因?yàn)樗麄兌枷虢o瀏覽網(wǎng)站的用戶提供一個(gè)更友好的、人文化的瀏覽環(huán)境,同時(shí)也能更加準(zhǔn)確地收集訪問(wèn)者的信息。Cookie的常見(jiàn)用途如下。

(1)網(wǎng)站瀏覽人數(shù)管理。

由于代理服務(wù)器、緩存等的使用,唯一能幫助網(wǎng)站精確統(tǒng)計(jì)來(lái)訪人數(shù)的方法就是為每個(gè)訪問(wèn)者建立一個(gè)唯一的ID。使用Cookie,網(wǎng)站可以完成以下工作:測(cè)定多少人訪問(wèn)過(guò);測(cè)定訪問(wèn)者中有多少是新用戶(即第一次來(lái)訪),多少是老用戶;測(cè)定一個(gè)用戶多久訪問(wèn)一次網(wǎng)站。

通常情況下,網(wǎng)站設(shè)計(jì)者是借助后臺(tái)數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)以上目的的。當(dāng)用戶第一次訪問(wèn)該網(wǎng)站時(shí),網(wǎng)站在數(shù)據(jù)庫(kù)中建立一個(gè)新的ID,并把ID通過(guò)Cookie傳送給用戶。用戶再次來(lái)訪時(shí),網(wǎng)站把該用戶ID對(duì)應(yīng)的計(jì)數(shù)器加1,得到用戶的來(lái)訪次數(shù)或判斷用戶是新用戶還是老用戶。

(2)按照用戶的喜好定制網(wǎng)頁(yè)外觀。

現(xiàn)在許多網(wǎng)站上都有新用戶注冊(cè)這一項(xiàng),注冊(cè)以后,等到下次再訪問(wèn)該站點(diǎn)時(shí),會(huì)自動(dòng)識(shí)別用戶,并且向用戶問(wèn)好,是不是覺(jué)得很親切?有的網(wǎng)站設(shè)計(jì)者為用戶提供了改變網(wǎng)頁(yè)內(nèi)容、布局和顏色的權(quán)利,允許用戶輸入自己的信息,然后通過(guò)這些信息對(duì)網(wǎng)站的一些參數(shù)進(jìn)行修改,以定制網(wǎng)頁(yè)的外觀。當(dāng)然這種作用只是表面現(xiàn)象,更重要的是,網(wǎng)站可以利用Cookie跟蹤統(tǒng)計(jì)用戶訪問(wèn)該網(wǎng)站的習(xí)慣,比如:什么時(shí)間訪問(wèn),訪問(wèn)了哪些頁(yè)面,在每個(gè)網(wǎng)頁(yè)的停留時(shí)間,等等。利用這些信息,一方面可以為用戶提供個(gè)性化的服務(wù),另一方面也可以作為了解用戶行為的工具,對(duì)于網(wǎng)站經(jīng)營(yíng)策略的改進(jìn)有一定參考價(jià)值。例如,用戶在某家航空公司站點(diǎn)查閱航班時(shí)刻表,該網(wǎng)站可能就創(chuàng)建了包含用戶旅行計(jì)劃的Cookies,也可能它只記錄了用戶在該站點(diǎn)上曾經(jīng)訪問(wèn)過(guò)的Web頁(yè),在用戶下次訪問(wèn)時(shí),網(wǎng)站根據(jù)用戶的情況對(duì)顯示的內(nèi)容進(jìn)行調(diào)整,將用戶所感興趣的內(nèi)容放在前列。這是高級(jí)的Cookie應(yīng)用。目前Cookie最廣泛的是記錄用戶登錄信息,這樣下次訪問(wèn)時(shí)可以不需要輸入自己的用戶名、密碼了——當(dāng)然這種方便也存在用戶信息泄露的問(wèn)題,尤其在多個(gè)用戶共用一臺(tái)電腦時(shí)很容易出現(xiàn)這樣的問(wèn)題。

(3)在電子商務(wù)站點(diǎn)中實(shí)現(xiàn)諸如“購(gòu)物籃”等功能。

可以使用Cookie記錄用戶的ID,這樣當(dāng)用戶在“購(gòu)物籃”中放了新東西時(shí),網(wǎng)站就能記錄下來(lái),并在網(wǎng)站的數(shù)據(jù)庫(kù)里對(duì)應(yīng)著用戶的ID記錄。當(dāng)用戶“買(mǎi)單”時(shí),網(wǎng)站通過(guò)ID檢索數(shù)據(jù)庫(kù)中用戶的所有選擇,就能知道用戶的“購(gòu)物籃”里有些什么。

在一般事例中,網(wǎng)站的數(shù)據(jù)庫(kù)能夠保存的有用戶所選擇的內(nèi)容、瀏覽過(guò)的網(wǎng)頁(yè)、在表單里填寫(xiě)的信息等;而包含有用戶唯一ID的Cookie則保存在用戶的電腦里。

Cookies給網(wǎng)站和用戶帶來(lái)的好處非常多:

Cookie能使站點(diǎn)跟蹤特定訪問(wèn)者的訪問(wèn)次數(shù)、最后訪問(wèn)時(shí)間和訪問(wèn)者進(jìn)入站點(diǎn)的路徑。

Cookie能告訴在線廣告商其廣告被點(diǎn)擊的次數(shù),從而可以更精確地投放廣告。

Cookie有效期限未到時(shí),能使用戶在不輸入密碼和用戶名的情況下進(jìn)入曾經(jīng)瀏覽過(guò)的一些站點(diǎn)。

Cookie能幫助站點(diǎn)統(tǒng)計(jì)用戶個(gè)人資料以實(shí)現(xiàn)各種各樣的個(gè)性化服務(wù)。

主站蜘蛛池模板: 永济市| 嘉禾县| 漳州市| 嘉义市| 镇赉县| 南丹县| 乃东县| 黄骅市| 丹江口市| 大厂| 丹东市| 抚顺县| 宜良县| 农安县| 钟山县| 沙湾县| 淅川县| 开江县| 成安县| 托克逊县| 彰化县| 石家庄市| 赤城县| 云阳县| 马关县| 翼城县| 客服| 汾西县| 依安县| 阜城县| 柘城县| 离岛区| 汶上县| 威宁| 红原县| 准格尔旗| 伊吾县| 湖南省| 楚雄市| 桓仁| 东山县|