草莓…视频在线观看_韩国床戏激情合集视频_国产精品调教奴变态_中文字幕亚洲天堂

合肥市高新區長江西路與科學大道交口5F創業園A座309
136 5560 1775

詳細分析Session和Cookie的區別

發表日期:2014-05-24 瀏覽次數:1991次

詳細分析Session和Cookie的區別

 

一 cookie簡介

因特網的Cookie技術極其簡單,卻有著旺盛的生命力。Cookie開始引起眾人的注意是從2000年二月份隨著網絡隱私權的提出開始的,有關的辯論至今仍在繼續。從另一方面來說,Cookie使得瀏覽網頁更容易了。幾乎所有的主要的網站設計者都使用了Cookie,因為他們想為瀏覽網站的人提供一個更好的瀏覽環境,同時也能更加準確地收集訪客的信息。

家頗有影響的報紙上曾刊登了一篇很有深度的關于網絡隱私的文章,上面對于Cookie的定義是這樣的:

“Cookie是Web網站放在您的硬盤上的程序。它守在您的電腦里,搜集您的信息以及您在因特網上所做的任何事情,當Web站點需要的時候它能夠下載所有這些搜集到的信息。”

像這樣的定義在報刊中相當普遍。問題是,它的定義犯了很大的錯誤。Cookie不是程序,而且它不能像程序一樣地運行,所以它無法為自己搜集任何信息。它也不能從您的電腦上取得您的任何個人資料。

Cookie的比較確切的定義應該是這個樣子:

“Cookie是Web服務器保存在用戶硬盤上的一段文本。Cookie允許一個Web站點在用戶的電腦上保存信息并且隨后再取回它。信息的片斷以‘名/值’對(name-valuepairs)的形式儲存。”

舉例來說,一個Web站點可能會為每一個訪問者產生一個唯一的ID,然后以Cookie文件的形式保存在每個用戶的機器上。

如果您使用IE瀏覽器訪問Web,您會看到所有保存在您的硬盤上的Cookie。它們最常存放的地方是:c:windowscookies(在Win2000中則是C:DocumentsandSettings您的用戶名Cookies——作者注)。在我的機器上共有165個文件。每一個文件都是一個由“名/值”對組成的文本文件,另外還有一個文件保存有所有對應的Web站點的信息。

在這個文件夾里的每個Cookie文件都是一個簡單而又普通的文本文件。透過文件名,您可以看到是哪個Web站點在您的機器上放置了Cookie(當然站點信息在文件里也有保存)。您也能雙擊打開每一個Cookie文件。

比如,我訪問了goto.com,而且這個站點在我的電腦上放了個Cookie。goto.com的Cookie文件包含了這樣的內容:

UserIDA9A3BECE0563982Dwww.goto.com/

goto.com在我的電腦上存入了一個單一的“名/值”對。“名/值”對的“名”是UserID,“值”是A9A3BECE0563982D。在我第一次訪問goto.com的時候,該網站為我分配了一個唯一的ID并存在我的電腦里。

(注:除了上面舉例的“名/值”對,可能會有其它的“名/值”對同時保存下來。那是瀏覽器的一些內部信息,一般用戶不必多做了解。)

Amazon.com在我的電腦上保存了稍稍多一些的信息。當我查看Amazon在我的電腦上建立的Cookie文件時,它包含以下內容:

session-id-time954242000amazon.com/
session-id002-4135256-7625846amazon.com/
x-maineKQIfwnxuF7qtmX52x6VWAXh@Ih6Uo5Hamazon.com/
ubid-main077-9263437-9645324amazon.com/

以上內容顯示出Amazon存儲了一個主用戶IDubid-main,一個標記每次任務的IDsession-id及任務發生的時間session-id-time。還有一個x-main,不知道是什么。

大多數的網站在您的電腦上只保存一條信息,即用戶ID。但一個站點可以用Cookie存儲的“名/值”對的最大數目沒有任何限制。

一個“名/值”對僅僅是一條命名的數據,它不是程序,也不能“做”任何事情。一個網站只能取得它放在您的電腦中的信息,它無法從其它的Cookie文件中取得信息,也無法得到您的電腦上的其它任何東西

英文直接翻譯過來的意思呢就是小甜品 Cookie英文意指餅干,不過在電腦術語中它可不像餅干那么簡單。簡單的說,Cookie就是服務器暫存放在你計算機上的一筆資料,好讓服務器用來辨認你的計算機。當你在瀏覽網站的時候,Web服務器會先送一小小資料放在你的計算機上,Cookie 會幫你在網站上所打的文字或是一些選擇,都記錄下來。當下次你再光臨同一個網站,Web服務器會先看看有沒有它上次留下的Cookie資料,有的話,就會依據Cookie里的內容來判斷使用者,送出特定的網頁內容給你。

Cookie的使用很普遍,許多提供個人化服務的網站,都是利用Cookie來辨認使用者,以方便送出使用者量身定做的內容,像是Web接口的免費E-mail網站,都要用到 Cookie。Cookie中記載的資料相有限,Cookie是安全的。網站不可能經由Cookie獲得你的E-mail地址或是其它私人資料,更沒有辦法透過Cookie來存取你的計算機。但是如果你實在不喜歡Web服務器亂丟餅干(Cookie)到你家,當然可以讓瀏覽器拒絕網站存放Cookie到你的計算機。只要在IE的“工具”菜單下選擇“Intertnet選項”的“安全”,按自定義級別,將Cookie部分設為關閉,按確定,關閉瀏覽器,再重新啟動瀏覽器即可。當你關閉Cookie之后,很多網站的個人化服務功能很可能也不能再使用了.

 

二 Session 簡介

IE中:

有效的窗品包括

1.Session對象只在建立Session對象的窗口中有效。

2.在建立Session對象的窗口中新開鏈接的窗口

無效的窗口包括

1.直接啟動IE瀏覽器的窗口

2.不是在建立Session對象的窗口中新開鏈接的窗口

NetScape中:

只要一個窗口有了某個Session對象,則全部窗口對此Session都有效

Session是什么呢?簡單來說就是服務器給客戶端的一個編號。當一臺WWW服務器運行時,可能有若干個用戶瀏覽正在運正在這臺服務器上的網站。當每個用戶首次與這臺WWW服務器建立連接時,他就與這個服務器建立了一個Session,同時服務器會自動為其分配一個SessionID,用以標識這個用戶的唯一身份。這個SessionID是由WWW服務器隨機產生的一個由24個字符組成的字符串,我們會在下面的實驗中見到它的實際樣子。

這個唯一的SessionID是有很大的實際意義的。當一個用戶提交了表單時,瀏覽器會將用戶的SessionID自動附加在HTTP頭信息中,(這是瀏覽器的自動功能,用戶不會察覺到),當服務器處理完這個表單后,將結果返回給SessionID所對應的用戶。試想,如果沒有SessionID,當有兩個用戶同時進行注冊時,服務器怎樣才能知道到底是哪個用戶提交了哪個表單呢。當然,SessionID還有很多其他的作用,我們會在后面提及到。

除了SessionID,在每個Session中還包含很多其他信息。但是對于編寫ASP或ASP.NET的程序與來說,最有用的還是可以通過訪問ASP/ASP.NET的內置Session對象,為每個用戶存儲各自的信息。例如我們想了解一下訪問我們網站的用戶瀏覽了幾個頁面,我們可能在用戶可能訪問到每個的頁面中加入:

<%
If Session("PageViewed") = ""Then
Session("PageViewed") = 1
Else
Session("PageViewed") = Session("PageViewed") + 1
End If
%>

通過以下這句話可以讓用戶得知自己瀏覽了幾個頁面:

<%
Response.Write("You have viewed " & Session("PageViewed") & " pages")
%>

可能有些有些讀者會問:這個看似像是數組的Session(“..”)是哪里來的?需要我定義嗎?實際上,這個Session對象是具有ASP解釋能力的的WWW服務器的內建對象。也就是說ASP的系統中已經給你定義好了這個對象,你只需要使用就行了。其中Session(“..”)中的..就好像變量名稱,Session(“..”)=$中的$就是變量的值了。你只需要寫上句話,在這個用戶的每個頁面中都可以訪問..變量中的值了。

其實ASP一共內建了7個對象,有Session、Application、Cookie、Response、Request、Server等。在其他的服務器端腳本語言如JSP、PHP等中也有其類似的對象,只是叫法或者使用方法上不太一樣。

ASP Session的功能的缺陷

目前ASP的開發人員都正在使用Session這一強大的功能,但是在他們使用的過程中卻發現了ASP Session有以下缺陷:

進程依賴性:ASP Session狀態存于IIS的進程中,也就是inetinfo.exe這個程序。所以當inetinfo.exe進程崩潰時,這些信息也就丟失。另外,重起或者關閉IIS服務都會造成信息的丟失。

Session狀態使用范圍的局限性:剛一個用戶從一個網站訪問到另外一個網站時,這些Session信息并不會隨之遷移過去。例如:新浪網站的WWW服務器可能不止一個,一個用戶登錄之后要去各個頻道瀏覽,但是每個頻道都在不同的服務器上,如果想在這些WWW服務器共享Session信息怎么辦呢?

Cookie的依賴性:實際上客戶端的Session信息是存儲與Cookie中的,如果客戶端完全禁用掉了Cookie功能,他也就不能享受到了Session提供的功能了。

鑒于ASP Session的以上缺陷,微軟的設計者們在設計開發 ASP.NET Session時進行了相應的改進,完全克服了以上缺陷,使得ASP.NET Session成為了一個更加強大的功能。

 

三 區別

Session是存在服務器端的;而Cookie是存在客戶端的!!

Session更不需要Cookie來支持和不會受瀏覽器端的設置影響,可記錄每個訪問者的信息,獨立在服務器端,比Cookie安全!

Session是存在內存中的,瀏覽器關閉它也就“死”了;Cookie是以文件方式存在的,可以修改其“存活”時間。


將文章分享到:

版權所有:啟邁科技-合肥網站建設 皖ICP備19009304號-1 皖公網安備 34010402702162號

網站建設,網站設計公司啟邁科技,為眾多企業提供網站建設,網站制作,響應式網站設計,手機網站建設,微網站,模板建站,企業郵箱等一站式互聯網解決方案和建站服務10年。