cookie和session常見問題

2021-09-11 11:28:33 字數 4979 閱讀 5784

1、cookie和session原理及區別  

cookie採用的是客戶端的會話狀態的一種儲存機制。

session是一種伺服器端的資訊管理機制,它把這些檔案資訊以檔案的形式存放在伺服器的硬碟空間上

(這是預設情況,可以用memcache把這種資料放到記憶體裡面)

區別:cookie儲存在客戶端瀏覽器中,而session儲存在伺服器上。

2、 session產生的session_id放在cookie裡面,如果使用者把cookie禁止掉,是不是session也不能用了呢?

禁止掉cookie後,session當然可以用,不過通過其他的方式來獲得這個sessionid,比如,可以跟在url的

後面,或者以表單的形勢提交到伺服器端。從而使伺服器端了解客戶端的狀態。

3、 為什麼說session 比cookie更安全?

1.sessionid是加密的,第二次session_start的時候,前一次的sessionid就沒有用了,session過期

時sessionid也會失效,

2.想在短時間內功破加了密的 sessionid很難。session是針對某一次通訊而言,會話結束session也就隨著

消失了。

使session失效的方法:

1.關閉tomcat 2.重啟web應用 3.session時間到 4.無效的session

cookie和session的區別:

①存在的位置:

cookie 存在於客戶端,臨時資料夾中; session存在於伺服器的記憶體中,乙個session域物件為乙個使用者

瀏覽器服務

②安全性

cookie是以明文的方式存放在客戶端的,安全性低,可以通過乙個加密演算法進行加密後存放; session存放於

伺服器的記憶體中,所以安全性好

③網路傳輸量

cookie會傳遞訊息給伺服器; session本身存放於伺服器,不會有傳送流量

④生命週期(以20分鐘為例)

cookie的生命週期是累計的,從建立時,就開始計時,20分鐘後,cookie生命週期結束;session的生命

週期是間隔的,從建立時,開始計時如在20分鐘,沒有訪問session,那麼session生命週期被銷毀。但是,

如果在20分鐘內(如在第19分鐘時)訪問過session,那麼,將重新計算session的生命週期。關機會造成

session生命週期的結束,但是對cookie沒有影響

⑤訪問範圍

cookie為多個使用者瀏覽器共享; session為乙個使用者瀏覽器獨享

session和cookie的區別

cookie

用來儲存使用者快取資料,儲存在瀏覽器中,關閉瀏覽器還會儲存在瀏覽器.一般cookie失效是因為,開發者設定的

時間期限已到.而且他可以由使用者任意修改,不安全.且cookie儲存的資料為簡單型別資料.

session

跟cookie一樣也是用來儲存使用者資料,區別在於session儲存的快取資料在伺服器中,儲存在瀏覽器的只是

使用者訪問伺服器快取的鑰匙(session_id).

而且session可以儲存複雜資料型別.session會在使用者關閉瀏覽器的時候清除失效,總而言之session相對

於cookie來說較安全.但沒有絕對的安全

1、cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上。

2、cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙,考慮到安全應當使用session。

3、session會在一定時間內儲存在伺服器上。當訪問增多,會比較占用你伺服器的效能,考慮到減輕伺服器

效能方面,應當使用cookie。

4、單個cookie儲存的資料不能超過4k,很多瀏覽器都限制乙個站點最多儲存20個cookie。

5、可以考慮將登陸資訊等重要資訊存放為session,其他資訊如果需要保留,可以放在cookie中。

一、cookie機制和session機制的區別

1.cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。

2.伺服器端保持狀態的方案在客戶端也需要儲存乙個標識,所以session機制可能需要借助於cookie機制來達到

儲存標識的目的,但實際上還有其他選擇

二、會話cookie和持久cookie的區別

1.如果不設定過期時間,則表示這個cookie生命週期為瀏覽器會話期間,只要關閉瀏覽器視窗,cookie就

消失了。這種生命期為瀏覽會話期的cookie被稱為會話cookie。會話cookie一般不儲存在硬碟上而是儲存

在記憶體裡。

2.如果設定了過期時間,瀏覽器就會把cookie儲存到硬碟上,關閉後再次開啟瀏覽器,這些cookie依然有效

直到超過設定的過期時間。

3.儲存在硬碟上的cookie可以在不同的瀏覽器程序間共享,比如兩個ie視窗。而對於儲存在記憶體的cookie,

不同的瀏覽器有不同的處理方式。

三、如何利用實現自動登入

當使用者在某個**註冊後,就會收到乙個惟一使用者id的cookie。客戶後來重新連線時,這個使用者id會自動

返回,伺服器對它進行檢查,確定它是否為註冊使用者且選擇了自動登入,從而使使用者務需給出明確的使用者名稱

和密碼,就可以訪問伺服器上的資源。

四、cookie的傳送

1.建立cookie物件

2.設定最大時效

3.將cookie放入到http響應報頭

4.如果你建立了乙個cookie,並將他傳送到瀏覽器,預設情況下它是乙個會話級別的cookie,儲存在瀏覽器

的記憶體中,使用者退出瀏覽器之後被刪除。

5.如果你希望瀏覽器將該cookie儲存在磁碟上,則需要使用maxage,並給出乙個以秒為單位的時間。將最大

時效設為0則是命令瀏覽器刪除該cookie。

五、cookie的讀取

1.要獲取有瀏覽器傳送來的cookie,需要呼叫httpservletrequest的getcookies方法,這個呼叫

返回cookie物件的陣列,對應由http請求中cookie報頭輸入的值。

2.對陣列進行迴圈,呼叫每個cookie的getname方法,直到找到感興趣的cookie為止

3.cookie與你的主機(域)相關,而非你的servlet或jsp頁面。因而,儘管你的servlet可能只傳送了

單個cookie,你也可能會得到許多不相關的cookie。

string cookiename = 「userid」;

cookie cookies = request.getcookies();

if (cookies!=null)

}二、session技術

session技術是將資料儲存在伺服器端的技術,會為每個客戶端都建立一塊記憶體空間儲存客戶的資料,但

客戶端需要每次都攜帶乙個標識id去伺服器中尋找屬於自己的記憶體空間。

session的實現是基於cookie,session需要借助於cookie儲存客 戶的唯一性標識jsessionid

1.獲得session物件

此方法會獲得專屬於當前會話的session物件,如果伺服器端沒有該會話的session物件會建立乙個新

的session返回,如果已經有了屬於該會話的session直接將已有的session返回(實質就是

根據jsessionid判斷該客戶端是否在伺服器上已經存在session了)

2.怎樣向session中訪問資料(session也是乙個域物件)

session也是儲存資料的區域物件,所以session物件也具有如下三個方法:

session.setattribute(string name,object obj);

session.getattribute(string name);

session.removeattribute(string name);

3.session物件的生命週期

建立:第一次執行request.getsession()時建立

銷毀: 1)伺服器(非正常)關閉時

2)session過期/失效(預設30分鐘)

問題:時間的起算點 從何時開始計算30分鐘?

從不操作伺服器端的資源開始計時(例如:當你訪問**頁面時,點開頁面不動,第29分鐘再動一下頁面,

就得重新計時30分鐘;當過了30分鐘,就失效了。)

可以在工程的web.xml中進行配置

30 3)手動銷毀session

session.invalidate();

作用範圍:

預設在一次會話中,也就是說在,一次會話中任何資源共用乙個session物件

瀏覽器關閉,session就銷毀了?

不對,瀏覽器關閉和伺服器session銷毀沒有任何關係!

會話技術:

cookie技術:存到客戶端

傳送cookie

cookie cookie = new cookie(name,value)

cookie.setmaxage(秒)

cookie.setpath()

response.addcookie(cookie)

獲得cookie

cookie cookies = request.getcookies();

cookie.getname();

cookie.getvalue();

session技術:存到伺服器端 借助cookie儲存jsessionid

setattribute(name,value);

getattribute(name);

session生命週期

建立:第一次指定request.getsession();

銷毀:伺服器關閉、session失效/過期、手動session.invalidate();

session作用範圍:預設一會話中

面試時cookie和session的常問方式

面試題 你是如何理解cookie的?談一談cookiecookie 1.概念 cookie資訊是鍵值對的形式儲存key,value 儲存在客戶端的資料叫cookie cookie資訊儲存在客戶端 當前瀏覽器 cookie是基於網域名稱的 ip 2.流程 大體流程 請求過程 原理 第一次請求過程 1....

常遇到的session與cookie問題集

hello,我又來啦,我就是那個無名的泰迪。我相信session和cookie這兩個名字大家都已經熟悉的不能再熟悉了吧,那它又是如何使用的呢,下面就讓泰迪帶你瀏覽大千世界吧。簡單看個圖,我們熟悉的三次握手。說到session就會想到登入,那我們先說說為什麼有session這麼乙個機制。session...

cookie和session和token是什麼?

什麼是session?什麼是cookie?什麼是token?1 cookie?由於http是一種無狀態協議,伺服器沒有辦法單單從網路連線上面知道訪問者的身份,為了解決這個問題,就誕生了cookie cookie實際上是一小段的4k文字資訊。客戶端請求伺服器,如果伺服器需要記錄該使用者狀態,就使用re...