session和cookies的區別

2021-08-30 14:19:53 字數 1399 閱讀 6793

[url]

我所知道的有以下區別:

1、session儲存在伺服器,客戶端不知道其中的資訊;cookie儲存在客戶端,伺服器能夠知道其中的資訊。

2、session中儲存的是物件,cookie中儲存的是字串。

3、session不能區分路徑,同乙個使用者在訪問乙個**期間,所有的session在任何乙個地方都可以訪問到。而cookie中如果設定了路徑引數,那麼同乙個**中不同路徑下的cookie互相是訪問不到的。

4、session需要借助cookie才能正常工作。如果客戶端完全禁止cookie,session將失效。

http是無狀態的協議,客戶每次讀取web頁面時,伺服器都開啟新的會話,而且伺服器也不會自動維護客戶的上下文資訊,那麼要怎麼才能實現網上商店中的購物車呢,session就是一種儲存上下文資訊的機制,它是針對每乙個使用者的,變數的值儲存在伺服器端,通過sessionid來區分不同的客戶,session是以cookie或url重寫為基礎的,預設使用cookie來實現,系統會創造乙個名為jsessionid的輸出cookie,我們叫做session cookie,以區別persistent cookies,也就是我們通常所說的cookie,注意session cookie是儲存於瀏覽器記憶體中的,並不是寫到硬碟上的,這也就是我們剛才看到的jsessionid,我們通常情是看不到jsessionid的,但是當我們把瀏覽器的cookie禁止後,web伺服器會採用url重寫的方式傳遞sessionid,我們就可以在位址列看到sessionid=kwjhug6jjm65hs2k6之類的字串。

明白了原理,我們就可以很容易的分辨出persistent cookies和session cookie的區別了,網上那些關於兩者安全性的討論也就一目了然了,session cookie針對某一次會話而言,會話結束session cookie也就隨著消失了,而persistent cookie只是存在於客戶端硬碟上的一段文字(通常是加密的),而且可能會遭到cookie欺騙以及針對cookie的跨站指令碼攻擊,自然不如session cookie安全了。

通常session cookie是不能跨視窗使用的,當你新開了乙個瀏覽器視窗進入相同頁面時,系統會賦予你乙個新的sessionid,這樣我們資訊共享的目的就達不到了,此時我們可以先把sessionid儲存在persistent cookie中,然後在新視窗中讀出來,就可以得到上乙個視窗sessionid了,這樣通過session cookie和persistent cookie的結合我們就實現了跨視窗的session tracking(會話跟蹤)。

在一些web開發的書中,往往只是簡單的把session和cookie作為兩種並列的http傳送資訊的方式,session cookies位於伺服器端,persistent cookie位於客戶端,可是session又是以cookie為基礎的,明白的兩者之間的聯絡和區別,我們就不難選擇合適的技術來開發web service了。

Cookies 和 Session的區別

1.cookie 是一種傳送到 客戶瀏覽器的文字串控制代碼,並儲存在客戶機硬碟上,可以用來在某個web站點會話間持久的保持資料。2.session 其實指的就是訪問者從到達某個特定主頁到離開為止的那段時間。session其實是利用cookie進行資訊處理的,當使用者首先進行了請求後,服務端就在使用者...

Cookies 和 Session的區別

1.cookie 是一種傳送到客戶瀏覽器的文字串控制代碼,並儲存在客戶機硬碟上,可以用來在某個web站點會話間持久的保持資料。2.session其實指的就是訪問者從到達某個特定主頁到離開為止的那段時間。session其實是利用cookie進行資訊處理的,當使用者首先進行了請求後,服務端就在使用者瀏覽...

Cookies 和 Session的區別

1.cookie 是一種傳送到客戶瀏覽器的文字串控制代碼,並儲存在客戶機硬碟上,可以用來在某個web站點會話間持久的保持資料。2.session其實指的就是訪問者從到達某個特定主頁到離開為止的那段時間。session其實是利用cookie進行資訊處理的,當使用者首先進行了請求後,服務端就在使用者瀏覽...