什麼是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.儲存使用者的購物車資料(頁面資訊,商品資訊),當然會有安全性方面的考慮。