HTTP之session和cookie

無狀態協議Http

Http是一個無狀態協議,就是說這一次請求和上一次請求是沒有任何關係的,互不認識的,沒有關聯的。這種無狀態的好處是快速。壞處是需要進行用戶狀態保持的場景時[比如,登陸狀態下進行頁面跳轉,或者用戶信息多頁面共享等場景],必須使用一些方式或者手段比如: session 和 cookie

cookie

爲了解決登錄時進行跳轉的問題,引入了cookie,cookie是一種在瀏覽器端解決的方案,將登陸認證之後的用戶信息保存在本地瀏覽器中,後面每次發起http請求,都自動攜帶上該信息,就能達到認證用戶,保持用戶在線的作用。可以在Http的Response報頭中添加set-cookie字段。

session

用戶敏感信息放到本地瀏覽器中,能解決一定的問題,但是又引進了新的安全問題,一旦cookie丟失,用戶信息泄露,也很容易造成跨站攻擊,所以有了另一種解決方法,將用戶敏感信息保存至服務器,而服務器本身採用md5算法或相關算法生成唯一值(session id),將該值保存在服務器,隨後,客戶端的後續請求,瀏覽器都會自動攜帶cookie,進而再在服務器端認證,進而達到狀態保持的效果。(只能由唯一的一個瀏覽器進行訪問)

實現session的兩種方法

  1. 一般情況下,利用cookie生成
  2. 當cookie被禁用時,利用URL重寫:重寫response.encodeURL()方法,encodeUTL()後面跟上sessionID

cookie和session的區別

  • cookie以文本文件格式存儲在瀏覽器中,而session存儲在服務端
  • 因爲每次發起 Http 請求,都要攜帶有效Cookie信息,所以Cookie一般都有大小限制,以防止增加網絡壓力,一般不超過4k
  • 可以輕鬆訪問cookie值但是我們無法輕鬆訪問session值,因此session方案更安全
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章