詳細(xì)分析Session和Cookie的區(qū)別
一 cookie簡介
因特網(wǎng)的Cookie技術(shù)極其簡單,卻有著旺盛的生命力。Cookie開始引起眾人的注意是從2000年二月份隨著網(wǎng)絡(luò)隱私權(quán)的提出開始的,有關(guān)的辯論至今仍在繼續(xù)。從另一方面來說,Cookie使得瀏覽網(wǎng)頁更容易了。幾乎所有的主要的網(wǎng)站設(shè)計者都使用了Cookie,因為他們想為瀏覽網(wǎng)站的人提供一個更好的瀏覽環(huán)境,同時也能更加準(zhǔn)確地收集訪客的信息。
家頗有影響的報紙上曾刊登了一篇很有深度的關(guān)于網(wǎng)絡(luò)隱私的文章,上面對于Cookie的定義是這樣的:
“Cookie是Web網(wǎng)站放在您的硬盤上的程序。它守在您的電腦里,搜集您的信息以及您在因特網(wǎng)上所做的任何事情,當(dāng)Web站點需要的時候它能夠下載所有這些搜集到的信息。”
像這樣的定義在報刊中相當(dāng)普遍。問題是,它的定義犯了很大的錯誤。Cookie不是程序,而且它不能像程序一樣地運(yùn)行,所以它無法為自己搜集任何信息。它也不能從您的電腦上取得您的任何個人資料。
Cookie的比較確切的定義應(yīng)該是這個樣子:
“Cookie是Web服務(wù)器保存在用戶硬盤上的一段文本。Cookie允許一個Web站點在用戶的電腦上保存信息并且隨后再取回它。信息的片斷以‘名/值’對(name-valuepairs)的形式儲存。”
舉例來說,一個Web站點可能會為每一個訪問者產(chǎn)生一個唯一的ID,然后以Cookie文件的形式保存在每個用戶的機(jī)器上。
如果您使用IE瀏覽器訪問Web,您會看到所有保存在您的硬盤上的Cookie。它們最常存放的地方是:c:windowscookies(在Win2000中則是C:DocumentsandSettings您的用戶名Cookies——作者注)。在我的機(jī)器上共有165個文件。每一個文件都是一個由“名/值”對組成的文本文件,另外還有一個文件保存有所有對應(yīng)的Web站點的信息。
在這個文件夾里的每個Cookie文件都是一個簡單而又普通的文本文件。透過文件名,您可以看到是哪個Web站點在您的機(jī)器上放置了Cookie(當(dāng)然站點信息在文件里也有保存)。您也能雙擊打開每一個Cookie文件。
比如,我訪問了goto.com,而且這個站點在我的電腦上放了個Cookie。goto.com的Cookie文件包含了這樣的內(nèi)容:
UserIDA9A3BECE0563982Dwww.goto.com/
goto.com在我的電腦上存入了一個單一的“名/值”對?!懊?值”對的“名”是UserID,“值”是A9A3BECE0563982D。在我第一次訪問goto.com的時候,該網(wǎng)站為我分配了一個唯一的ID并存在我的電腦里。
(注:除了上面舉例的“名/值”對,可能會有其它的“名/值”對同時保存下來。那是瀏覽器的一些內(nèi)部信息,一般用戶不必多做了解。)
Amazon.com在我的電腦上保存了稍稍多一些的信息。當(dāng)我查看Amazon在我的電腦上建立的Cookie文件時,它包含以下內(nèi)容:
session-id-time954242000amazon.com/
session-id002-4135256-7625846amazon.com/
x-maineKQIfwnxuF7qtmX52x6VWAXh@Ih6Uo5Hamazon.com/
ubid-main077-9263437-9645324amazon.com/
以上內(nèi)容顯示出Amazon存儲了一個主用戶IDubid-main,一個標(biāo)記每次任務(wù)的IDsession-id及任務(wù)發(fā)生的時間session-id-time。還有一個x-main,不知道是什么。
大多數(shù)的網(wǎng)站在您的電腦上只保存一條信息,即用戶ID。但一個站點可以用Cookie存儲的“名/值”對的最大數(shù)目沒有任何限制。
一個“名/值”對僅僅是一條命名的數(shù)據(jù),它不是程序,也不能“做”任何事情。一個網(wǎng)站只能取得它放在您的電腦中的信息,它無法從其它的Cookie文件中取得信息,也無法得到您的電腦上的其它任何東西
英文直接翻譯過來的意思呢就是小甜品 Cookie英文意指餅干,不過在電腦術(shù)語中它可不像餅干那么簡單。簡單的說,Cookie就是服務(wù)器暫存放在你計算機(jī)上的一筆資料,好讓服務(wù)器用來辨認(rèn)你的計算機(jī)。當(dāng)你在瀏覽網(wǎng)站的時候,Web服務(wù)器會先送一小小資料放在你的計算機(jī)上,Cookie 會幫你在網(wǎng)站上所打的文字或是一些選擇,都記錄下來。當(dāng)下次你再光臨同一個網(wǎng)站,Web服務(wù)器會先看看有沒有它上次留下的Cookie資料,有的話,就會依據(jù)Cookie里的內(nèi)容來判斷使用者,送出特定的網(wǎng)頁內(nèi)容給你。
Cookie的使用很普遍,許多提供個人化服務(wù)的網(wǎng)站,都是利用Cookie來辨認(rèn)使用者,以方便送出使用者量身定做的內(nèi)容,像是Web接口的免費(fèi)E-mail網(wǎng)站,都要用到 Cookie。Cookie中記載的資料相有限,Cookie是安全的。網(wǎng)站不可能經(jīng)由Cookie獲得你的E-mail地址或是其它私人資料,更沒有辦法透過Cookie來存取你的計算機(jī)。但是如果你實在不喜歡Web服務(wù)器亂丟餅干(Cookie)到你家,當(dāng)然可以讓瀏覽器拒絕網(wǎng)站存放Cookie到你的計算機(jī)。只要在IE的“工具”菜單下選擇“Intertnet選項”的“安全”,按自定義級別,將Cookie部分設(shè)為關(guān)閉,按確定,關(guān)閉瀏覽器,再重新啟動瀏覽器即可。當(dāng)你關(guān)閉Cookie之后,很多網(wǎng)站的個人化服務(wù)功能很可能也不能再使用了.
二 Session 簡介
IE中:
有效的窗品包括
1.Session對象只在建立Session對象的窗口中有效。
2.在建立Session對象的窗口中新開鏈接的窗口
無效的窗口包括
1.直接啟動IE瀏覽器的窗口
2.不是在建立Session對象的窗口中新開鏈接的窗口
NetScape中:
只要一個窗口有了某個Session對象,則全部窗口對此Session都有效
Session是什么呢?簡單來說就是服務(wù)器給客戶端的一個編號。當(dāng)一臺WWW服務(wù)器運(yùn)行時,可能有若干個用戶瀏覽正在運(yùn)正在這臺服務(wù)器上的網(wǎng)站。當(dāng)每個用戶首次與這臺WWW服務(wù)器建立連接時,他就與這個服務(wù)器建立了一個Session,同時服務(wù)器會自動為其分配一個SessionID,用以標(biāo)識這個用戶的唯一身份。這個SessionID是由WWW服務(wù)器隨機(jī)產(chǎn)生的一個由24個字符組成的字符串,我們會在下面的實驗中見到它的實際樣子。
這個唯一的SessionID是有很大的實際意義的。當(dāng)一個用戶提交了表單時,瀏覽器會將用戶的SessionID自動附加在HTTP頭信息中,(這是瀏覽器的自動功能,用戶不會察覺到),當(dāng)服務(wù)器處理完這個表單后,將結(jié)果返回給SessionID所對應(yīng)的用戶。試想,如果沒有SessionID,當(dāng)有兩個用戶同時進(jìn)行注冊時,服務(wù)器怎樣才能知道到底是哪個用戶提交了哪個表單呢。當(dāng)然,SessionID還有很多其他的作用,我們會在后面提及到。
除了SessionID,在每個Session中還包含很多其他信息。但是對于編寫ASP或ASP.NET的程序與來說,最有用的還是可以通過訪問ASP/ASP.NET的內(nèi)置Session對象,為每個用戶存儲各自的信息。例如我們想了解一下訪問我們網(wǎng)站的用戶瀏覽了幾個頁面,我們可能在用戶可能訪問到每個的頁面中加入:
<%
If Session("PageViewed") = ""Then
Session("PageViewed") = 1
Else
Session("PageViewed") = Session("PageViewed") + 1
End If
%>
通過以下這句話可以讓用戶得知自己瀏覽了幾個頁面:
<%
Response.Write("You have viewed " & Session("PageViewed") & " pages")
%>
可能有些有些讀者會問:這個看似像是數(shù)組的Session(“..”)是哪里來的?需要我定義嗎?實際上,這個Session對象是具有ASP解釋能力的的WWW服務(wù)器的內(nèi)建對象。也就是說ASP的系統(tǒng)中已經(jīng)給你定義好了這個對象,你只需要使用就行了。其中Session(“..”)中的..就好像變量名稱,Session(“..”)=$中的$就是變量的值了。你只需要寫上句話,在這個用戶的每個頁面中都可以訪問..變量中的值了。
其實ASP一共內(nèi)建了7個對象,有Session、Application、Cookie、Response、Request、Server等。在其他的服務(wù)器端腳本語言如JSP、PHP等中也有其類似的對象,只是叫法或者使用方法上不太一樣。
ASP Session的功能的缺陷
目前ASP的開發(fā)人員都正在使用Session這一強(qiáng)大的功能,但是在他們使用的過程中卻發(fā)現(xiàn)了ASP Session有以下缺陷:
進(jìn)程依賴性:ASP Session狀態(tài)存于IIS的進(jìn)程中,也就是inetinfo.exe這個程序。所以當(dāng)inetinfo.exe進(jìn)程崩潰時,這些信息也就丟失。另外,重起或者關(guān)閉IIS服務(wù)都會造成信息的丟失。
Session狀態(tài)使用范圍的局限性:剛一個用戶從一個網(wǎng)站訪問到另外一個網(wǎng)站時,這些Session信息并不會隨之遷移過去。例如:新浪網(wǎng)站的WWW服務(wù)器可能不止一個,一個用戶登錄之后要去各個頻道瀏覽,但是每個頻道都在不同的服務(wù)器上,如果想在這些WWW服務(wù)器共享Session信息怎么辦呢?
Cookie的依賴性:實際上客戶端的Session信息是存儲與Cookie中的,如果客戶端完全禁用掉了Cookie功能,他也就不能享受到了Session提供的功能了。
鑒于ASP Session的以上缺陷,微軟的設(shè)計者們在設(shè)計開發(fā) ASP.NET Session時進(jìn)行了相應(yīng)的改進(jìn),完全克服了以上缺陷,使得ASP.NET Session成為了一個更加強(qiáng)大的功能。
三 區(qū)別
Session是存在服務(wù)器端的;而Cookie是存在客戶端的!!
Session更不需要Cookie來支持和不會受瀏覽器端的設(shè)置影響,可記錄每個訪問者的信息,獨(dú)立在服務(wù)器端,比Cookie安全!
Session是存在內(nèi)存中的,瀏覽器關(guān)閉它也就“死”了;Cookie是以文件方式存在的,可以修改其“存活”時間。
[ 上一篇 ] PS導(dǎo)出圖片時提示內(nèi)存不足RAM的解決辦法
[ 下一篇 ] 搭配好線條和形狀增強(qiáng)頁面的藝術(shù)魅力
相關(guān)新聞
日期:19 瀏覽:22994
日期:19 瀏覽:21609
日期:19 瀏覽:20978
版權(quán)所有:啟邁科技-合肥網(wǎng)站建設(shè) 皖I(lǐng)CP備19009304號-1 皖公網(wǎng)安備 34010402702162號
網(wǎng)站建設(shè),網(wǎng)站設(shè)計公司啟邁科技,為眾多企業(yè)提供網(wǎng)站建設(shè),網(wǎng)站制作,響應(yīng)式網(wǎng)站設(shè)計,手機(jī)網(wǎng)站建設(shè),微網(wǎng)站,模板建站,企業(yè)郵箱等一站式互聯(lián)網(wǎng)解決方案和建站服務(wù)10年。