JavaScript之cookie的生死之道
cookie其實(shí)就是網(wǎng)站放在用戶機(jī)器上的一小塊信息,cookie對(duì)于用戶來(lái)說(shuō)是唯一的,網(wǎng)站可判斷用戶上次訪問(wèn)網(wǎng)站的時(shí)間,以及他訪問(wèn)了哪些頁(yè)面,可用于在某個(gè)網(wǎng)站跟蹤你訪問(wèn)的頁(yè)面,但無(wú)法用它來(lái)獲取個(gè)人信息。cookie是***個(gè)JavaScript可以利用的客戶端—服務(wù)器端之間的交互手段。瀏覽器向服務(wù)器發(fā)送請(qǐng)求時(shí),為這個(gè)服務(wù)器存儲(chǔ)的cookie會(huì)與其他信息一起發(fā)送到服務(wù)器。
如果一個(gè)cookie不設(shè)置expires過(guò)期時(shí)間的話,這個(gè)cookie會(huì)在同源瀏覽器的***一個(gè)窗口關(guān)閉之后失效。不設(shè)置過(guò)期時(shí)間的cookie也只能被同源瀏覽器、同域網(wǎng)頁(yè)所調(diào)用。如果想同域但非同源的網(wǎng)頁(yè)也能調(diào)用這個(gè)cookie的話,必須設(shè)置過(guò)期時(shí)間。
cookie是在瀏覽器端同域(同大域)同源或非同源瀏覽器窗口之間的一些信息交換中轉(zhuǎn)站。比如象CSDN里的WEBIM,每個(gè)頁(yè)面都想知道目前都有誰(shuí)給我發(fā)送了留言,通過(guò)cookie的中轉(zhuǎn),就可以做到即使同時(shí)打開(kāi)100個(gè)窗口,也不會(huì)同時(shí)100個(gè)請(qǐng)求并發(fā),只要其中的一個(gè)頁(yè)面去請(qǐng)求就夠 了,另外的頁(yè)面只需要實(shí)時(shí)監(jiān)控這個(gè)cookie即可。
cookie的所在域domain如果設(shè)置為大域,比如:csdn.net,那么所有這個(gè)大域下的子域比如http://bbs.csdn.net/、http://blog.csdn.net/ 都可以直接訪問(wèn)到這個(gè)cookie設(shè)置。這個(gè)特性被很多大型網(wǎng)站用做passport登錄,保證一處登錄,所以子域都是登錄狀態(tài)。
cookie可以設(shè)置path路徑,可以指定cookie的起效路徑。
少用cookie,因?yàn)樵诿總€(gè)HTTP請(qǐng)求都會(huì)帶上cookie信息在網(wǎng)絡(luò)間傳輸,會(huì)在無(wú)聲無(wú)息中大量消耗寶貴的帶寬,因?yàn)槊空?qǐng)求一張圖片、每一個(gè)AJAX請(qǐng)求都會(huì)帶上這個(gè)cookie信息,大家可以用HTTP請(qǐng)求的抓包工具看到。少用cookie,特別要慎用大域cookie。若只是作為本地?cái)?shù)據(jù)中轉(zhuǎn)中心可以使用userdata或者sessionStorage。
希望通過(guò)本文對(duì)于COOKIE的介紹,能給帶來(lái)幫助。
【編輯推薦】