webstorage
本地存储webstorage
是本地存储,存储在客户端,包括localStorage
和sessionStorage
localStorage
生命周期是永久,这意味着除非用户显示在浏览器提供的UI上清除localStorage
信息,否则这些信息将永远存在。存放数据大小为一般为5MB,而且它仅在客户端(即浏览器)中保存,不参与和服务器的通信sessionStorage
仅在当前会话下有效,关闭页面或浏览器后被清除。存放数据大小为一般为5MB,而且它仅在客户端(即浏览器)中保存,不参与和服务器的通信。源生接口可以接受,亦可再次封装来对Object
和Array
有更好的支持WebStorage
的目标
提供一种在cookie
之外存储会话数据的路径
提供一种存储大量可以跨会话存在的数据的机制
HTML5
的WebStorage
提供了两种API:localStorage
(本地存储)和sessionStorage
(会话存储)
作用域的不同:
不同浏览器无法共享localStorage
或sessionStorage
中的信息。
相同浏览器的不同页面间可以共享相同的 localStorage
(页面属于相同域名和端口),但是不同页面或标签页间无法共享sessionStorage
的信息。这里需要注意的是,页面及标签页仅指顶级窗口,如果一个标签页包含多个iframe
标签且他们属于同源页面,那么他们之间是可以共享sessionStorage
的
存储大小:
localStorage
和sessionStorage
的存储数据大小一般都是:5MB
存储位置:
localStorage
和sessionStorage
都保存在客户端,不与服务器进行交互通信
存储内容类型:
localStorage
和sessionStorage
只能存储字符串类型,对于复杂的对象可以使用ECMAScript
提供的JSON
对象的stringify
和parse
来处理
获取方式:
localStorage
:window.localStorage
;;sessionStorage
:window.sessionStorage
;
应用场景:
localStoragese
:常用于长期登录(+判断用户是否已登录),适合长期保存在本地的数据,而sessionStorage
:敏感账号一次性登录
WebStorage的优点:
存储空间更大:cookie
为4KB,而WebStorage
是5MB
节省网络流量:WebStorage
不会传送到服务器,存储在本地的数据可以直接获取,也不会像cookie
一样美词请求都会传送到服务器,所以减少了客户端和服务器端的交互,节省了网络流量
对于那种只需要在用户浏览一组页面期间保存而关闭浏览器后就可以丢弃的数据,sessionStorage
会非常方便
快速显示:有的数据存储在WebStorage
上,再加上浏览器本身的缓存。获取数据时可以从本地获取会比从服务器端获取快得多,所以速度更快
安全性:WebStorage
不会随着HTTP header
发送到服务器端,所以安全性相对于cookie
来说比较高一些,不会担心截获,但是仍然存在伪造问题
WebStorage
提供了一些方法,数据操作比cookie
方便
cookie
HTTP Cookie
简称cookie
,在HTTP
请求发送Set-Cookie HTTP
头作为响应的一部分。通过name=value
的形式存储cookie
的构成:name
(不区分大小写,但最好认为它是区分的)value
(通过URL编码:encodeURIComponent
)cookie
的作用:主要用于保存登录信息cookie
过期时间之前一直有效,即使窗口或浏览器关闭。 存放数据大小为4K左右 。有个数限制(各浏览器不同),一般不能超过20个。与服务器端通信:每次都会携带在HTTP
头中,如果使用cookie
保存过多数据会带来性能问题cookie
的优点:
cookie
中的session
对象的大小cookie
被破解的可能性cookie
中存放不敏感的数据,即使被盗取也不会有很大的损失cookie
的生命期,使之不会永远有效。这样的话偷盗者很可能拿到的就 是一个过期的cookie
cookie
的缺点:
cookie
的长度和数量的限制。每个domain
最多只能有20条cookie
,每个cookie
长度不能超过4KB,否则会被截掉cookie
被人拦掉了,那个人就可以获取到所有session
信息。加密的话也不起什么作用sessionStorage
sessionStorage
是Storage类型的一个对象,拥有clear()
,getItem(name)
,key(index)
,removeItem(name)
,setItem(name,value)
方法sessionStorage
对象存储特定于某个会话的数据,也就是该数据只保持到浏览器关闭session
对象中。所谓session
,是指用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。session
对象可以用来保存在这段时间内所要求保存的任何数据sessionStorage
为临时保存localStorage
localStorage
也是Storage
类型的一个对象HTML5
中localStorage
作为持久保存在客户端数据的方案取代了globalStorage(globalStorage必须指定域名)
localStorage
会永久存储会话数据,除非removeItem
,否则会话数据一直存在localStorage
为永久保存图示说明:
注意:时刻注意XSS
注入的风险,因为可以在控制台直接访问它们,所以不要存入敏感数据
本地储存localStorage
与cookie
的区别
cookie
在浏览器与服务器之间来回传递sessionStorage
和localStorage
不会把数据发给服务器,仅在本地保存cookie
只在设置的cookie
过期时间之前一直有效,即使窗口或浏览器关闭sessionStorage
:仅在当前浏览器窗口关闭前有效localStorage
始终有效,长期保存cookie
数据还有路径的概念,可以限制cookie
只属于某个路径下cookie
数据不能超过4k,sessionStorage
和localStorage
虽然也有存储大小的限制,但比cookie
大得多,可以达到5M或更大sessionStorage
不在不同的浏览器窗口中共享localStorage
在所有同源窗口中都是共享的cookie
也是在所有同源窗口中都是共享的WebStorage
支持事件通知机制,可以将数据更新的通知发送给监听者。Web Storage
的 api 接口使用更方便cookie
、session
和localStorage
的区别
cookie
的内容主要包括:名字、值、过期时间、路径和域,路径与域一起构成cookie
的作用范围。若不设置时间,则表示这个cookie
的生命期为浏览器会话期间,关闭浏览器窗口,cookie
就会消失,这种生命期为浏览器会话期的cookie
被称为会话cookie
cookie
一般不存储在硬盘而是保存在内存里,当然这个行为并不是规范规定的。若设置了过期时间,浏览器就会把cookie
保存到硬盘上,关闭后再打开浏览器这些cookie
仍然有效直到超过设定的过期时间。对于保存在内存里的cookie
,不同的浏览器有不同的处理方式session
机制。session
时,服务器首先检查这个客户端的请求里是否已包含了一个session
标识(称为session id
),如果已包含则说明以前已经为此客户端创建过session
,服务器就按照session id
把这个session
检索出来使用(检索不到,会新建一个),如果客户端请求不包含session id
,则为客户端创建一个session
并且生成一个与此session
相关联的session id
,session id
的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id
将被在本次响应中返回给客户端保存。保存这个session id
的方式可以采用cookie
,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。cookie
和session
的区别
cookie
数据存放在客户的浏览器上,session
数据放在服务器上cookie
不是很安全,别人可以分析存放在本地的cookie
并进行cookie
欺骗,考虑到安全应当使用session
session
会在一定时间内保存在服务器上,当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie
cookie
保存的数*据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie
session
,其他信息如果需要保留,可以放在cookie
中session
保存在服务器,客户端不知道其中的信心;cookie
保存在客户端,服务器能够知道其中的信息session
中保存的是对象,cookie
中保存的是字符串session
不能区分路径,同一个用户在访问一个网站期间,所有的session
在任何一个地方都可以访问到,而cookie
中如果设置了路径参数,那么同一个网站中不同路径下的cookie
互相是访问不到的web Storage
和cookie
的区别
Web Storage
的概念和cookie
相似,区别是它是为了更大容量存储设计的,cookie
的大小是受限的,并且每次请求一个新的页面的时候cookie
都会被发送过去,这样无形中浪费了带宽,另外cookie
还需要指定作用域,不可跨域调用web storage
拥有setItem
,getItem
,removeItem
,clear
等方法,不像cookie
需要前端开发者自己封装setCookie
,getCookie
cookie
也是不可或缺的,cookie
的作用是与服务器进行交互,作为http
规范的一部分而存在的,而web Storage
仅仅是为了在本地“存储”数据而生sessionStorage
、localStorage
、cookie
都是在浏览器端存储的数据,其中sessionStorage
的概念很特别,引入了一个“浏览器窗口”的概念,sessionStorage
是在同源的同窗口中,始终存在的数据,也就是说只要这个浏览器窗口没有关闭,即使刷新页面或进入同源另一个页面,数据仍然存在,关闭窗口后,sessionStorage
就会被销毁,同时“独立”打开的不同窗口,即使是同一页面,sessionStorage
对象也是不同的Web Storage
的好处
sessionStorage
非常方便浏览器本地存储与服务器端存储的区别
sessionStorage
、localStorage
和cookie
都是由浏览器存储在本地的数据session
机制,如jsp的session
对象,数据保存在服务器上session id
即可,服务器根据session id
找到对应用户的session
对象,会话数据仅在一段时间内有效,这个时间就是server
端设置的session
有效期sessionStorage
、localStorage
和cookie
的区别
cookie
数据始终在同源的http
请求中携带(即使不需要),即cookie
在浏览器和服务器间来回传递,而sessionStorage
和localStorage
不会自动把数据发送给服务器,仅在本地保存。cookie
数据还有路径(path
)的概念,可以限制cookie
只属于某个路径下cookie
数据不能超过4K,同时因为每次http
请求都会携带cookie
、所以cookie
只适合保存很小的数据,如会话标识。sessionStorage
和localStorage
虽然也有存储大小的限制,但比cookie
大得多,可以达到5M或更大sessionStorage
:仅在当前浏览器窗口关闭之前有效;localStorage
:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie
:只在设置的cookie
过期时间之前有效,即使窗口关闭或浏览器关闭sessionStorage
不在不同的浏览器窗口中共享,即使是同一个页面;localstorage
在所有同源窗口中都是共享的;cookie
也是在所有同源窗口中都是共享的web Storage
支持事件通知机制,可以将数据更新的通知发送给监听者web Storage
的api接口使用更方便sessionStorage
与页面js数据对象的区别
sessionStorage
只要同源的同窗口中,刷新页面或进入同源的不同页面,数据始终存在,也就是说只要浏览器不关闭,数据仍然存在localstorage
和 sessionstorage
localStorage
和 sessionStorage
都具有相同的操作方法,例如 setItem()
、getItem()
和 removeItem()
等
value
存储到 key
字段setItem( key, value)
sessionStorage.setItem('key', 'value');
localStorage.setItem('key', 'value');
key
本地存储的值getItem(key)
sessionStorage.getItem('key');
localStorage.getItem('key');
key
本地存储的值setItem(key)
sessionStorage.setItem('key', 'newVal');
localStorage.setItem('key', 'newVal');
key
本地存储的值getItem(key)
sessionStorage.removeItem('key');
localStorage.removeItem('key');
clear()
sessionStorage.clear();
localStorage.clear();
cookie
window.document.cookie = 'xxx';
document.cookie