1. 程式人生 > >什麼是session? cookie和session有何聯絡?

什麼是session? cookie和session有何聯絡?

什麼是session:

1.session 是一種服務端機制,類似散列表結構來儲存使用者資料。

2.瀏覽器第一次向伺服器傳送請求的時候,伺服器會自動生成一個session和sessionID

3.sessionID唯一標識這個session

4.伺服器通過返回響應將sessionID傳送回瀏覽器

5.瀏覽器第二次向該伺服器傳送請求時會攜帶該sessionID

6.伺服器通過這個sessionID找到對應的session獲取使用者資料

session的儲存:

1.一般伺服器會在一定時間內儲存該session(預設30分鐘),時間過了就會銷燬,銷燬前程式設計師可以使用session儲存一些key-value資料

2.可以使用序列化的方法將這個session儲存在資料庫中,好處是資料會一直存在,壞處是資料量會不斷增加。所以一般是使用前一種方法。

sessionID的儲存方法:

1.伺服器通過設定cookies的方式將sessionID傳送給瀏覽器。如果設定cookies的過期時間,那麼cookies不會存在於硬碟上,隨著瀏覽器的關閉而關閉。

2.使用URL附加資訊的方式,也就是像我們經常看到JSP網站會有aaa.jsp?JSESSIONID=*一樣的。這種方式和第一種方式裡面不設定Cookie過期時間是一樣的。

3. 第三種方式是在頁面表單裡面增加隱藏域,這種方式實際上和第二種方式一樣,只不過前者通過GET方式傳送資料,後者使用POST方式傳送資料。但是明顯後者比較麻煩。

session和cookies的區別:

1. Cookie和Session都是會話技術,Cookie是執行在客戶端,Session是執行在伺服器端。

2. Cookie有大小限制以及瀏覽器在存cookie的個數也有限制,Session是沒有大小限制和伺服器的記憶體大小有關。

3. Cookie有安全隱患,通過攔截或本地檔案找得到你的cookie後可以進行攻擊。

session和cookies的聯絡:

1.Cookies是屬於Session物件的一種。但有不同,Cookies不會佔伺服器資源,是存在客服端記憶體或者一個cookie的文字檔案中;而“Session”則會佔用伺服器資源。所以,儘量不要使用Session,而使用Cookies。但是我們一般認為cookie是不可靠的,session是可靠地,但是目前很多著名的站點也都以來cookie。有時候為了解決禁用cookie後的頁面處理,通常採用伺服器端程式url重寫技術,呼叫session中大量有用的方法從session中獲取資料後置入頁面。

使用cookies需要注意的方面:

1.不要儲存私人資訊。  2.任何重要資料,最好通過加密形式來儲存資料(最簡單的可以用URLEncode,當然也可以用完善的可逆加密方式,遺憾的是,最好不要用md5來加密)。  3.是否儲存登陸資訊,需有使用者自行選擇。  4.長於10K的資料,不要用到Cookies。 

cookies的典型應用:

1.判斷使用者是否登陸過網站,以便下次登入時能夠直接登入。如果我們刪除cookie,則每次登入必須從新填寫登入的相關資訊。

2.儲存使用者的購物車資料(頁面資訊,商品資訊),當然會有安全性方面的考慮。