国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

細說Cookie,LocalStorage,SessionStorage

fnngj / 2557人閱讀

摘要:內存由瀏覽器維護,瀏覽器關閉后消失硬盤存在硬盤里,有過期時間,除非手動清理或到過期時間,否則不會消失。是一個瀏覽器狀態管理文件,由于協議是不保存狀態的,需要在請求中攜帶發送到服務器,服務器根據判斷用戶。

面試題目中經常被問到Cookie和LocalStorage的區別,可見其在項目開發中的重要性,這篇文章旨在詳細闡述這部分內容。

概念

1.Cookie
Cookie分為內存Cookie和硬盤Cookie。內存 Cookie由瀏覽器維護,瀏覽器關閉后消失;硬盤Cookie存在硬盤里,有過期時間,除非手動清理或到過期時間,否則不會消失。
Cookie是一個瀏覽器狀態管理文件,由于http協議是不保存狀態的,需要在http請求中攜帶Cookie發送到服務器,服務器根據cookie判斷用戶。

Cookie原理

Cookie只能綁定單一域名,不可以跨域使用。
Cookie屬性
name:Cookie名稱,設置相同名稱的值會被覆蓋掉;
value:Cookie值,考慮服務器兼容性,必須URL編碼;
domain:Cookie綁定域名,沒設置的話自動綁定執行語句當前域,統一域名下的二級域名不可交換使用Cookie;
path:匹配路由;
expires/Max-Age:有效期;expires是具體日期,Max-age是以秒為單位,設置為0時,關閉瀏覽器cookie清除;
secure:設置該屬性后,僅通過安全通道(https)傳輸時,http請求才會包含cookie,但secure僅保護cookie的機密性,不能保護完整性,也不能對客戶端Cookie進行加密;
httpOnly: 設為true時,不能腳本獲取Cookie,能有效避免跨域本?(XSS)?攻擊

Cookie操作:
獲取Cookie:document.cookie
修改Cookie:document.cookie = “cookie_name=cookie_value”

Cookie安全:
XSS攻擊:XSS(Cross Site Scripting)是跨站點腳本攻擊的縮寫. 其就是利用站點開放的文本編輯并發布的功能, 從而造成攻擊.其實說的簡單一點, 就是輸入javascript腳本, 竊取并投遞cookie信息到自己的站點.
比如攻擊者以一個普通用戶登錄進來,然后在輸入框中提交以下數據:

text 

攻擊者提交a標簽后,該數據保存在服務器端,當管理員登陸后點擊到這個a標簽后會獲取當前cookie到上面a標簽設定的網址,叫做XSS攻擊,也叫Cookie劫持。

如何防御:
1.添加HttpOnly 屬性;
2.在cookie中添加校驗信息,比如IP,UA等判斷是否真正用戶;
3.cookie中的session id定時更換。

cookie接口封裝:

var cookieUtil = {
    // 設置cookie
    setItem: function(name, value, days) {
        var date=new Date();
        date.setDate(date.getDate()+days);
        document.cookie=name+"="+value+";expires="+date;
    },

    // 獲取cookie
    getItem: function(name) {
         var arr=document.cookie.replace(/s/g, "").split(";");
         for(var i=0;i

2.localStorage,sessionStorage
HTML5新增的客戶端存儲API,都遵循瀏覽器的同源策略。
localStorage:沒有時間限制的數據存儲
sessionStorage:針對一個session的數據存儲

操作:
setItem(key, value) 以鍵值對的形式存儲,

localStorage.setItem(‘key’, value)

getItem(key) 通過key獲取value值

var value = sessionStorage.getItem(“key”)

removeItem(key)通過key刪除對應value

localStorage.removeItem(“key”)

clear() 清空存儲內容

localStorage.clear()

key/length等用法:

var storage = window.localStorage;
storage.key1 = ‘Hello’;
storage[key2] = ‘world’;
console.log(storage.key1+’’+storage.key2) // Hello world

var storage = window.localStorage;
console.log(storage.length) // 返回已存儲簡直對的個數

三者的異同

數據生命周期
Cookie:一般由服務器生成,可設置失效時間。如果在瀏覽器端生cookie,默認關閉瀏覽器后失效
localStorage:除非被清除,否則永久保存
sessionStorage:僅在當前會話下有效,關閉頁面或瀏覽器被清除
存放數據大小
Cookie:4K左右
localStorage/sessionStorage:5MB左右
與服務器端通信
Cookie:每次都會攜帶在HTTP頭中,如果cookie保存過多,會帶來性能問題
localStorage/sessionStorage:僅在客戶端內存中保存,不參與和服務器端通信
易用性
Cookie:需要自己封裝,源生Cookie接口不友好
localStorage/sessionStorage:源生接口可接受,使用方便

參考資料
維基百科-Cookie
把cookie聊清楚
Secure Cookie
Http cookies
Window.localStorage
詳說Cookie、localStorage、sessionStorage

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/104773.html

相關文章

  • 詳說 Cookie, LocalStorageSessionStorage

    摘要:顧名思義,確實非常小,它的大小限制為左右,是網景公司的前雇員在年月的發明。是標準中新加入的技術,它并不是什么劃時代的新東西。特性與的接口類似,但保存數據的生命周期與不同。但當頁面關閉后,中的數據就會被清空。 本文最初發布于我的個人博客:咀嚼之味 最近在找暑期實習,其中百度、網易游戲、阿里的面試都問到一些關于HTML5的東西,問題大多是這樣開頭的:你用過什么HTML5的技術呀?...

    endless_road 評論0 收藏0
  • cookieSessionstorageLocalstorage快速上手

    摘要:快速上手先說區別數據大小不能超過。可以在后端設置修改,數據僅在本地瀏覽器保存。數據存儲在瀏覽器僅在瀏覽器為關閉的狀態,關閉窗口后數據就會銷毀。默認情況下,屬于當前頁面。 cookie、Sessionstorage、Localstorage快速上手 先說區別 cookie: 數據大小不能超過4KB。 不管是否有需求,cookie數據都會在HTTP請求中攜帶,在瀏覽器和服務器中來回傳遞,...

    duan199226 評論0 收藏0
  • localStoragesessionStorageCookie的區別及用法

    摘要:的區別及用法是本地存儲,存儲在客戶端,包括和。僅在當前會話下有效,關閉頁面或瀏覽器后被清除。源生接口可以接受,亦可再次封裝來對和有更好的支持。但需要程序員自己封裝,源生的接口不友好。每個最多只能有條,每個長度不能超過。 localStorage、sessionStorage、Cookie的區別及用法 showImg(https://segmentfault.com/img/bVYLlH...

    sf_wangchong 評論0 收藏0

發表評論

0條評論

fnngj

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<