題外話:雖然沒有各種大神的部落格閱讀量多,但是自己也是希望自己能夠將這些部落格能夠堅持下去,分享自己學到的一點一滴的小的知識點。為自己加油!
在web中,我們經常聽到的就是cookie和session的使用和區別。最近在測試過程中,也看到了關於web storage。因為網路的頻寬是有限的,所以利用客戶端進行儲存資料也越來越多,越來越普遍。同樣,客戶端的儲存方式也是多種多樣。最簡單和易用的方式就是cookie。但是由於cookie本身儲存資料大小有限制並且安全性等等問題,所以html5就引入了web storage的概念。
下面我們來一一介紹這幾種的區別。
一、cookie和session
cookie的資料存放在使用者自身的瀏覽器中,而session的資料儲存在伺服器中
cookie的安全性不是很高,(xsrf攻擊中就可以利用cookie資訊進行偽造成使用者,傳送偽造請求,造成攻擊),別人可以分析存放在本地cookie,進行cookie欺騙;session的安全性相對於cookie比較高一點。
session會在一定時間內儲存到伺服器上,當訪問增多時,session就會降低伺服器的效能,考慮到減輕伺服器效能方面,可以考慮用cookie儲存一些暫時性的資料
session儲存的是物件;cookie中儲存的是字串
cookie中的內容包括名字、值、過期時間、路徑和域。而路徑和域一起構成了cookie的作用範圍。如果cookie設定了相應的路徑引數,那麼同乙個**的不同路徑下的cookie相互之間是訪問不到的;而session是儲存到伺服器,所以所有的session在任何乙個地方都可以訪問的到。
cookie的路徑和域標明了cookie作用域,cookie的時間,則是表明cookie的生命期。如果不設定cookie的生命期,那麼預設的就是瀏覽器會話期間,關閉瀏覽器,cookie也會隨之消失。這種生命週期的cookie一般稱之為會話cookie。會話cookie一般是儲存到記憶體中的。如果cookie設定了過期時間,那麼即使關閉了瀏覽器,cookie也仍有效。這種cookie一般儲存到硬碟上。
當程式需要給客戶端的某個請求建立乙個session時,伺服器會首先檢查這個客戶端的請求中是否有session標識,也成為session id。如果客戶端請求中已經有了session id,伺服器就會按照這個session id把對應的session檢索出來。如果客戶端的請求中沒有session id,那麼伺服器就會為這個客戶端新建乙個session id,並且生成乙個與此session相關聯的session id。一般來說,session id是乙個不容易重複也不容易被仿造的字串。這個新建的session id在本次響應中,返回給客戶端進行儲存。session id 儲存在客戶端的方式可以是cookie,在下次請求中,使用者的瀏覽器可以自動的把這個session標識發給伺服器,用於查詢對應的session。
雖然session儲存在伺服器端,但是session資料也是屬於臨時會話資料。所以,session資料也會有過期時間,僅會在一段時間內有效,而這個時間就是伺服器端設定的session的有效期。伺服器端不僅儲存session這種臨時會話資料,也會儲存使用者的持久資料。
二、web storage 和cookie
從這個中可以看到,web storage有兩種,乙個是local storage,乙個是session storage。
web storage的概念和cookie相似,他們都是儲存到使用者瀏覽器中,並且是同源的。在h5引入web storage的時候就是為了更大容量的儲存,所以web storage擁有比cookie更大的容量。但是兩者之間又是有區別的。
cookie的作用是與伺服器進行互動,也就是cookie在瀏覽器和伺服器間來回進行傳遞。而 web storage主要是為了本地資料的「儲存」,web storage不會主動地將資料傳送給伺服器,僅僅會在本地儲存。
web storage 有setitem,getitem,removeitem,clear等方法。而cookie需要前端開發者自己封裝setcookie,getcookie
cookie儲存的大小限制也不同。cookie的大小限制是4k。因為每次請求都會攜帶cookie去請求伺服器資源,所以cookie也只適合儲存很小的資料,比如上面介紹的session id。web storage雖然也會有儲存大小的限制,但是相比於cookie來說,會相對大很多,可以達到5m甚至更大。
資料有效期不同:
5. 作用域不同:
Web儲存機制
web storagede 的兩個主要目標是 1 提供一種在cookie之外的儲存會話資料的途徑 2 提供一種儲存大量可以跨會話存在的資料的機制。1.storage型別 storage型別提供最大的儲存空間 因瀏覽器而異 來儲存名值對。storage的例項與其他物件類似,有如下方法 clear 刪除...
web資料儲存
資料訪問 1.儲存乙個元素儲存多種資訊的陣列型別資料 var message 定義乙個名字為message的物件 message.name which name one 定義message的.name屬性 message.phone which name two 定義message的.phone屬性...
web資料儲存
資料的儲存必然是任何 必須經歷的事,我們可以將資料存放在不同地方,資料庫 檔案 記憶體 程式本身 cookie,session中都可以,但是只要需要持久化保留的資料,那麼最終肯定還是落在磁碟之上的,我們的磁碟可以格式化成各種型別的檔案系統,也可以由應用程式直接呼叫裸盤 一.儲存型別 塊儲存檔案儲存 ...