1. 程式人生 > >面試題5.Cookie和session的區別

面試題5.Cookie和session的區別

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

2、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙

   考慮到安全應當使用session。

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

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

5、所以個人建議:

   將登陸資訊等重要資訊存放為SESSION

     其他資訊如果需要保留,可以放在COOKIE中

儲存時間

開發人員可以設定cookie的時間

Session預設時間是30分鐘

session的原理:

http是無狀態的協議,客戶每次讀取web頁面時,伺服器都開啟新的會話,而且伺服器也不會自動維護客戶的上下文資訊。session就是一種儲存上下文資訊的機制,她是針對每一個使用者的,session的內容在伺服器端,通過sessionId來區分不同的客戶,session是以cookie或url重寫為基礎的,預設用cookie來實現,系統會創造一個JSESSIONID的輸出cookie,我們成為session cookie,以區分persistent coookies,注意session cookie是儲存於瀏覽器記憶體中的,並不是寫到硬碟上的;我們通常是看不見JSESSIONID的,但是當我們禁用瀏覽器的cookie後,web伺服器會採用url重寫的方式傳遞sessionid,我們就可以在瀏覽器看到sessionid=HJHADKSFHKAJSHFJ之類的字串;session cookie針對某一次會話而言,會話結束session cookie也就消失了

sessioncookie的聯絡:

session是需要藉助cookie才能正常工作的,如果客戶端完全禁止cookie,session將失效

session和cookie的應用:

如何利用實現自動登入

當用戶在某個網站註冊後,就會收到一個惟一使用者ID的cookie。客戶後來重新連線時,這個使用者ID會自動返回,伺服器對它進行檢查,確定它是否為註冊使用者且選擇了自動登入,從而使使用者無需給出明確的使用者名稱和密碼,就可以訪問伺服器上的資源

會話跟蹤:

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