摘要:通常,它用于告知服務端兩個請求是否來自同一瀏覽器,如保持用戶的登錄狀態。使基于無狀態的協議記錄穩定的狀態信息成為了可能。標記為的只應通過被協議加密過的請求發送給服務端。
前記
前面我已經寫了一篇關于Cookie的文章,但是那時候我其實理解的并不是很深刻,會有些搞不懂的地方,今天我就再寫一次,博客也是我的學習筆記
CookieCookie是服務器發送到用戶瀏覽器并保存在本地的一小塊數據,它會在瀏覽器下次向同一服務器再發起請求時被攜帶并發送到服務器上。通常,它用于告知服務端兩個請求是否來自同一瀏覽器,如保持用戶的登錄狀態。Cookie使基于無狀態的HTTP協議記錄穩定的狀態信息成為了可能。
Cookie如何設置Cookie的設置是在服務端來操作的,用戶訪問服務器,服務器響應中響應頭帶上
response.setHeader("Cookie", "Max-Age=Cookie的特性")//設置過期時間
Cookie的默認是隨著用戶關閉時過期,但是服務器可以設置Cookie的使用時間還有過期時間
Cookie可以設置HttpOnly來使用戶不能通過JS來操作Cookie,HttpOnly類型的Cookie在一定程度上緩解XSS類攻擊。
標記為 Secure 的Cookie只應通過被HTTPS協議加密過的請求發送給服務端。
Cookie的缺陷就像上面Cookie的特性中的2、3條說的,Cookie并不安全,因為Cookie如果包含著重要信息被人記錄或者篡改,那就可以對用戶的賬戶進行操作,所以為了改善這一個問題,就要用到接下來說的Session
Cookie總結1、服務器通過Set-Cookie頭給客戶端一串字符串
2、客戶端每次訪問相同域名的網頁時必須帶上這段字符串
3、客戶端要在一段時間內保存這個Cookie
4、Cookie默認在用戶關閉時過期,后臺可以設置Cookie存在時間
5、可以在控制臺的Application中強制刪除Cookie
Session并不是HTTP協議中的一部分,Session是一個抽象的概念,是用來解決Cookie來標識用戶而泄漏隱秘信息的一種方法,并且因為實現了中斷和繼續操作而叫‘會話’
Session的實現服務器通過Cookie給用戶一個SessionId
SessionId對應著服務器中的一小塊內存,這塊內存存著用戶的隱秘信息
每次用戶訪問服務器的時候,服務期就通過SessionId去讀取對應的內存,就知道了用戶的隱秘信息
Session的缺陷從上面可以看出,Session最大的缺陷就是占服務器的內存
Session的總結1、將SessionId(一般就是一個隨機數)通過Cookie發給客戶端
2、客戶端訪問服務器時,服務器讀取SessionId
3、服務器有一塊內存(對象)保存了所有的Session
4、痛毆SessionId我們可以得到對應用戶的隱私信息,如id,email
5、這塊內存(哈希)就是服務器上的Session
不寫Cookie,將SessionId返回給JS,通過JSON返回給前端
前端拿到這個響應將其變成對象
將這個SessionId存到LocalStorage中
頁面跳轉登錄后,將SessionId寫到查詢參數中,后臺通過查詢參數知道當前的SessionId
然后通過SessionId去Session中查找出用戶的信息
Session和Cookie的區別從上面的內容中就可以發現,Session和Cookie的區別很大
首先Cookie是HTTP協議中的一部分,而Session是一個抽象的概念
然后Session是存放在服務器的內存中,而Cookie是存放在本地
最后Session一般是依賴于Cookie的,SessionId是通過 Cookie 發送給客戶端的
LocalStorage是HTML5提供的新的API,LocalStorage也是一個哈希,是一個存在瀏覽器上的哈希
LocalStorage的使用方法用戶設置的使用方法
localStorage.setItem("a", "1")
用戶如何獲取存的對象
localStorage.getItem("a")
用戶如何清理
localStorage.clear()LocalStorage的總結
LocalStorage跟HTTP無關
只有相同域名的頁面才能互相讀取LocalStorage(沒有同源那么嚴格)
每個域名的LocalStorage最大存儲量為5M左右(由瀏覽器決定)
常用場景:記錄有沒有提示過用戶(沒有用的信息,不能記錄密碼)
LocalStorage存儲的信息永遠有效,除非用戶清除
SessionStorage和LocalStorage的區別1、2、3、4條同上,但是SessionStorage在用戶關閉頁面后就失效了
LocalStorage和Cookie的區別從上面也可以看出
LocalStorage 不會隨 HTTP 發給 Server
LocalStorage 的大小限制比 Cookie(4K) 大多了
LocalStorage存在的原因由于歷史遺留問題,以前所有信息都放到Cookie中,但是每次請求都要帶上Cookie,因此會上傳很多無用的東西,影響速度,因此作為一個前端不要讀寫Cookie
想說的話正式學習前端已經快三個月了,一步步深入就總感覺自己學的不夠,自己很垃圾,但是幸好我能感覺到我有東西可以學,所以,在沒學完的那一刻,我是不會停下來的,加油
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/108350.html
摘要:不是很安全,別人可以分析存放在本地的并進行欺騙,考慮到安全應當使用。因此不是一種持久化的本地存儲,僅僅是會話級別的存儲。用于持久化的本地存儲,除非主動刪除數據,否則數據是永遠不會過期的。 前言 總括:詳細講述Cookie,LocalStorge,SesstionStorge的區別和用法。 人生如畫,歲月如歌。 原文博客地址:Javascript本地存儲小結 知乎專欄&&簡書專題:前端...
摘要:保持狀態保存在瀏覽器端,保存在服務器端存儲的大小單個保存的數據不能超過大小沒有限制。的目的是克服由所帶來的一些限制,當數據需要被嚴格控制在客戶端時,不需要持續的將數據發回服務器。的生命周期是僅在當前會話下有效。 寫在前面 既然是淺談,就不會詳細從底層原理解釋這幾個的區別,就簡單地聊一下,這幾個的區別,優缺點,應用場景 cookie和session 瀏覽器的緩存機制提供了可以將用戶數據存...
摘要:那要是被刪了呢那沒辦法了,只能重新登陸,意味著重新提交重新分配隨機數。它是一個哈希,作用就是字面意思,本地存儲,只不過這里的本地指的是瀏覽器。 標簽可以保留回車和空格等你怎么寫它就怎么展示的內容 cookie cookie可以看作是一種設置,允許瀏覽器在電腦本地硬盤的某一個隱蔽的地方開發一塊存儲空間,用來存放某些特定的內容。 如果在服務器端設置了允許使用cookie,那么,之后瀏覽器每...
摘要:理解進公園背景這個公園有一個總公園總公園里有許多小公園總公園是登錄頁面小公園是域名相同的頁面第一次進總公園第一次請求某個服務器工作人員檢查你的入園是否符合條件后端查看是否是注冊以后的用戶通過條件的話工作人員會給你一張票后端會給你一個響應頭這 Cookie, Session, LocalStorage, SessionStorage Cookie 理解 進公園 背景: 這個公園有一個總公...
閱讀 732·2021-11-24 10:30
閱讀 1268·2021-09-24 09:48
閱讀 3083·2021-09-24 09:47
閱讀 3602·2019-08-29 17:11
閱讀 2885·2019-08-29 15:38
閱讀 2281·2019-08-29 11:03
閱讀 3609·2019-08-26 12:15
閱讀 1019·2019-08-26 10:45