1.背景介紹
IP地址是Internet主機(jī)作為路由尋址用的數(shù)字體標(biāo)識(shí)甚纲,人不容易記憶。
因而產(chǎn)生了域名這一種字符型標(biāo)識(shí)朦前。cookie中文名稱(chēng)為“小型文本文件”介杆,
某些網(wǎng)站為了辨別用戶(hù)身份而儲(chǔ)存在用戶(hù)本地終端(Client Side)上的數(shù)據(jù)(通常經(jīng)過(guò)加密)。
定義于RFC2109韭寸。是網(wǎng)景公司的前雇員盧·蒙特利在1993年3月的發(fā)明春哨。
2.知識(shí)剖析
域名在因特網(wǎng)上用來(lái)代替IP地址,因?yàn)镮P地址沒(méi)有實(shí)際含義恩伺,人們不容易記住赴背,
所以用有含義的英文字母來(lái)代替。在網(wǎng)絡(luò)上晶渠,專(zhuān)門(mén)有DNS(域名服務(wù)器)
來(lái)進(jìn)行域名與IP的相互轉(zhuǎn)換凰荚,人們輸入域名,在DNS上轉(zhuǎn)換為IP褒脯,
才能找到相應(yīng)的服務(wù)器便瑟,打開(kāi)相應(yīng)的網(wǎng)頁(yè)。
cookie的用途
因?yàn)镠TTP協(xié)議是無(wú)狀態(tài)的番川,即服務(wù)器不知道用戶(hù)上一次做了什么胳徽,這嚴(yán)重阻礙了交互式Web應(yīng)用程序的實(shí)現(xiàn)。在典型的網(wǎng)上購(gòu)物場(chǎng)景中爽彤,用戶(hù)瀏覽了幾個(gè)頁(yè)面,買(mǎi)了一盒餅干和兩飲料缚陷。最后結(jié)帳時(shí)适篙,由于HTTP的無(wú)狀態(tài)性,不通過(guò)額外的手段箫爷,服務(wù)器并不知道用戶(hù)到底買(mǎi)了什么嚷节。 所以Cookie就是用來(lái)繞開(kāi)HTTP的無(wú)狀態(tài)性的“額外手段”之一。服務(wù)器可以設(shè)置或讀取Cookies中包含信息虎锚,借此維護(hù)用戶(hù)跟服務(wù)器會(huì)話(huà)中的狀態(tài)硫痰。在剛才的購(gòu)物場(chǎng)景中,當(dāng)用戶(hù)選購(gòu)了第一項(xiàng)商品窜护,服務(wù)器在向用戶(hù)發(fā)送網(wǎng)頁(yè)的同時(shí)效斑,還發(fā)送了一段Cookie,記錄著那項(xiàng)商品的信息柱徙。當(dāng)用戶(hù)訪(fǎng)問(wèn)另一個(gè)頁(yè)面缓屠,瀏覽器會(huì)把Cookie發(fā)送給服務(wù)器奇昙,于是服務(wù)器知道他之前選購(gòu)了什么。用戶(hù)繼續(xù)選購(gòu)飲料敌完,服務(wù)器就在原來(lái)那段Cookie里追加新的商品信息储耐。結(jié)帳時(shí),服務(wù)器讀取發(fā)送來(lái)的Cookie就行了滨溉。
3.常見(jiàn)問(wèn)題
COOKIE的有效期
COOKIE 和SESSION的區(qū)別
4.解決方案
COOKIE的有效期
cookie 大致可分為兩種狀態(tài)
臨時(shí)性質(zhì)的cookie什湘。當(dāng)前使用的過(guò)程中網(wǎng)站會(huì)儲(chǔ)存一些你的個(gè)人信息,當(dāng)瀏覽器關(guān)閉后這些信息也會(huì)從計(jì)算機(jī)中刪除晦攒。
設(shè)置失效時(shí)間的cookie闽撤。就算瀏覽器關(guān)閉了,這些信息業(yè)依然會(huì)在計(jì)算機(jī)中勤家。如 登錄名稱(chēng)和密碼腹尖,這樣無(wú)須在每次到特定站點(diǎn)時(shí)都進(jìn)行登錄。這種cookie 可在計(jì)算機(jī)中保留幾天伐脖、幾個(gè)月甚至幾年热幔。
session的作用和cookie差不多,也是用來(lái)解決Http協(xié)議不能維持狀態(tài)的問(wèn)題讼庇。區(qū)別:
1绎巨、cookie數(shù)據(jù)存放在客戶(hù)的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上蠕啄。
2场勤、cookie不是很安全,別人可以分析存放在本地的COOKIE并進(jìn)行COOKIE欺騙
考慮到安全應(yīng)當(dāng)使用session歼跟。
3和媳、session會(huì)在一定時(shí)間內(nèi)保存在服務(wù)器上。當(dāng)訪(fǎng)問(wèn)增多哈街,會(huì)比較占用你服務(wù)器的性能
考慮到減輕服務(wù)器性能方面留瞳,應(yīng)當(dāng)使用COOKIE。
4骚秦、單個(gè)cookie保存的數(shù)據(jù)不能超過(guò)4K她倘,很多瀏覽器都限制一個(gè)站點(diǎn)最多保存20個(gè)cookie。
5作箍、所以個(gè)人建議:
將登陸信息等重要信息存放為SESSION
其他信息如果需要保留硬梁,可以放在COOKIE中
5.編碼實(shí)戰(zhàn)
在默認(rèn)的情況下,cookie 會(huì)在瀏覽器關(guān)閉的時(shí)候自動(dòng)清除胞得,但是我們可以通過(guò)expires來(lái)設(shè)置 cookie 的有效期荧止。語(yǔ)法如下:
document.cookie = "name=value;expires=date"
上面代碼中的date值為GMT(格林威治時(shí)間)格式的日期型字符串,生成方式如下:
var _date = new Date();
_date.setDate(_date.getDate()+30);
_date.toGMTString();
上面三行代碼分解為幾步來(lái)看:
通過(guò)new生成一個(gè)Date的實(shí)例,得到當(dāng)前的時(shí)間罩息;
getDate()方法得到當(dāng)前本地月份中的某一天嗤详,接著加上30就是我希望這個(gè)cookie能過(guò)在本地保存30天;
接著通過(guò)setDate()方法來(lái)設(shè)置時(shí)間瓷炮;
最后 用toGMTString()方法把Date對(duì)象轉(zhuǎn)換為字符串葱色,并返回結(jié)果
6.擴(kuò)展思考
什么是域名解析服務(wù)(DNS)
7.參考文獻(xiàn)
參考一:Darren