动态

详情 返回 返回

Session是什麼?它與Cookie有什麼區別? - 动态 详情

你好,是我琉憶。

今天我們講一講Session與Cookie的區別

1、Session對象

上一節簡單介紹了Cookie,接下來簡單介紹Session。Session和Cookie都是會話管理技術的一種。可能你會奇怪記住用户的信息有Cookie就夠了,為什麼還需要Session?那麼我們帶着這個疑問一起來看看Session,以及對比兩者的區別。

2、什麼是Session?

Session的翻譯有:一場; 一節; 一段時間; (法庭的)開庭,開庭期; (議會等的)會議,會期;學年; (酒吧中)演奏會(尤指演奏愛爾蘭音樂)等等多種意思。一般我們拿來指代“會議”或者“會期”的意思。但是實際我們説的時候都統一用英文名稱來稱呼這種技術,它和Cookie一樣都算是計算機術語。

Session對象存儲特定用户會話所需的屬性及配置信息。這樣,當用户在應用程序的Web頁之間跳轉時,存儲在Session對象中的變量將不會丟失,而是在整個用户會話中一直存在下去。當用户請求來自應用程序的 Web頁時,如果該用户還沒有會話,則Web服務器將自動創建一個 Session對象。當會話過期或被放棄後,服務器將終止該會話。Session 對象最常見的一個用法就是存儲用户的首選項。例如,如果用户指明不喜歡查看圖形,就可以將該信息存儲在Session對象中。

當用户登錄或訪問一些初始頁面時,服務器會為客户端分配一個 SessionID。SessionID 是一個加密的隨機數字,在 Session 的生命週期中保存在客户端。它可以保存在用户機器的 Cookie 中,也可以通過 URL 在網絡中進行傳輸。用户通過 SessionID 可以註冊一些特殊的變量,稱為會話變量,這些變量的數據保存在服務器端。在一次特定的網站連接中,如果客户端可以通過 Cookie 或 URL 找到SessionID,那麼服務器就可以根據客户端傳來的 SessionID 訪問會話保存在服務器端的會話變量。Session 的生命週期只在一次特定的網站連接中有效,當關閉瀏覽器後,Session 會自動失效,之前註冊的會話變量也不能再使用。

3、為什麼需要Session

需要Session的主要原因是它存儲更安全,一般用户的登錄狀態都是使用Session來存,這樣在每個頁面之間切換時,我們都可以追蹤到當前用户的信息,顯示用户的登錄狀態。那麼為什麼Session存儲更安全呢?原因是因為它的文件存儲在服務器端,用户是沒有權限操作服務器的,除了服務器管理員有權限操作外。這樣就可以避免非法用户竊取Session中的數據,從而保證了數據的安全性。反而客户端的電腦有被黑客入侵竊取文件的風險,或者是別的用户使用該客户端電腦時,直接竊取Cookie文件的風險,導致數據泄露的問題。

【如果你還沒有關注我的話,可以點點關注,下次更新精彩博文我通知你。】

4、Session使用在哪些場合?

由於Session數據是存儲在服務器端的,安全性比Cookie要高。那麼數據安全性要求比較高,比較私密的情況下都可以使用Session。

那麼一般我們會用Session存儲用户的狀態,方便在頁面之間切換時依舊顯示登錄狀態。還可以作為緩存,緩存用户購物車數據。為什麼購物車的數據不適用Cookie呢?原因很簡單,如果用Cookie實現購物車的存儲功能,當用户在A電腦放了3件商品到購物車中,用户在A電腦看購物車時3件商品都是可以看到的。但是當用户在B電腦登錄賬號查看購物車時,會發現購物車中一件商品都沒有。如果使用Session就不存在這種問題。那麼為什麼會出現這種情況呢?原因就在於存儲數據的方式不同!首先Cookie是存儲數據在客户端,Session是存儲數據在服務端。那麼當用户在A電腦存儲數據到購物車時,如果存到Cookie中,就相當於把數據存儲到了A電腦中,在B電腦自然讀取不到該Cookie的數據。反而Session存儲商品在服務器時,無論你換哪台電腦,都是可以直接從服務器獲取該用户的信息展示的。

所以綜合下來,總結就是Cookie存儲數據在本地,安全性要求不高、不要求數據共享都可以使用它;Session存儲數據在服務器,數據安全性要求高、需要共享數據,則可以選擇Session。

5、Cookie和Seesion有什麼區別?

簡單介紹完Cookie和Session之後,我相信你一定有很多疑問,Cookie和Session到底有什麼區別?我們簡單從多個角度來進行對比。對比結果如下:image.png
那麼對比下來,最關鍵的是,如果存儲的數據安全性要求比較高,比較私密,那麼數據就存儲在Session中,如果安全性要求不那麼高就存儲在Cookie中。原因是Cookie存儲在本地,黑客可以在通訊過程中竊取Cookie解密查看存儲信息。如果信息存儲在Session中,Session的數據是緩存在服務器端的,黑客是沒有權限操作服務器,對Session文件進行破解的,只能獲取到SessionID。而SessionID是服務端程序獲取Session數據的唯一標識。

6、我寫的書開始預售了!

最近正在寫一本《ASP.NET Web動態網站》開發的書,預計2月底寫完,敬請期待~
預售網址:【村長編寫】14天零基礎到入門搞定ASP.NET Web網頁開發【書籍】預售
更多編程知識獲取,可以關注公眾號:琉憶編程庫。

Add a new 评论

Some HTML is okay.