Cookie、session和localStorage、以及sessionStorage之间的区别
⼀、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的区别:
*1、cookie数据存放在客户的浏览器上,session数据放在服务器上
2、cookie不是很安全,别⼈可以分析存放在本地的cookie并进⾏cookie欺骗,考虑*到安全应当使⽤session
3、session会在⼀定时间内保存在服务器上,当访问增多,会⽐较占⽤你服务器的性能,考虑到减轻服务器性能⽅⾯,应当使⽤cookie
4、单个cookie保存的数*据不能超过4K,很多浏览器都限制⼀个站点最多保存20个cookie
5、建议将登录信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中
6、session保存在服务器,客户端不知道其中的信⼼;cookie保存在客户端,服务器能够知道其中的信息
7、session中保存的是对象,cookie中保存的是字符串
8、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带来的好处:
1、减少⽹络流量:⼀旦数据保存在本地之后,就可以避免再向服务器请求数据,因此减少不必要的数据请求,减少数
据在浏览器和服务器间不必要的来回传递
2、快速显⽰数据:性能好,从本地读数据⽐通过⽹络从服务器上获得数据快得多,本地数据可以及时获得,再加上⽹
页本⾝也可以有缓存,因此整个页⾯和数据都在本地的话,可以⽴即显⽰
3、临时存储:很多时候数据只需要在⽤户浏览⼀组页⾯期间使⽤,关闭窗⼝后数据就可以丢弃了,这种情况使⽤sessionStorage⾮常⽅便
四、浏览器本地存储与服务器端存储的区别
session数据错误是什么意思其实数据既可以在浏览器本地存储,也可以在服务器端存储
浏览器可以保存⼀些数据,需要的时候直接从本地存取,sessionStorage、localStorage和cookie都是由浏览器存储在本地的数据
服务器端也可以保存所有⽤户的所有数据,但需要的时候浏览器要向服务器请求数据。
1、服务器端可以保存⽤户的持久数据,如数据库和云存储将⽤户的⼤量数据保存在服务器端
2、服务器端也可以保存⽤户的临时会话数据,服务器端的session机制,如jsp的session对象,数据保存在服务器上,
实际上,服务器和浏览器之间仅需传递session id即可,服务器根据session id到对应⽤户的session对象,会话数据仅在⼀段时间内有效,这个时间就是server端设置的session有效期
服务器端保存所有的⽤户的数据,所以服务器端的开销较⼤,⽽浏览器端保存则把不同⽤户需要的数据分别保存在⽤户各⾃的浏览器中,浏览器端⼀般只⽤来存储⼩数据,⽽⾮服务可以存储⼤数据或⼩数据服务器存储数据安全⼀些,浏览器只适合存储⼀般数据
五、sessionStorage、localStorage和cookie的区别
共同点:都是保存在浏览器端、且同源的
区别:
1、cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递,⽽sessionStorage和localStorage不会⾃动把数据发送给服务器,仅在本地保存。cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下
2、存储⼤⼩限制也不同,cookie数据不能超过4K,同时因为每次http请求都会携带cookie、所以cookie只适合保存很⼩的数据,如会话标识。sessionStorage和localStorage虽然也有存储⼤⼩的限制,但⽐cookie⼤得多,可以达到5M或更⼤
3、数据有效期不同,sessionStorage:仅在当前浏览器窗⼝关闭之前有效;localStorage:始终有效,窗⼝或浏览器关闭也⼀直保存,因此⽤作持久数据;cookie:只在设置的cookie过期时间之前有效,即使窗⼝关闭或浏览器关闭
4、作⽤域不同,sessionStorage不在不同的浏览器窗⼝中共享,即使是同⼀个页⾯;localstorage在所有同源窗⼝中都是共享的;cookie也是在所有同源窗⼝中都是共享的
5、web Storage⽀持事件通知机制,可以将数据更新的通知发送给监听者
6、web Storage的api接⼝使⽤更⽅便
六、sessionStorage与页⾯js数据对象的区别
页⾯中⼀般的js对象的⽣存期仅在当前页⾯有效,因此刷新页⾯或转到另⼀页⾯这样的重新加载页⾯的情况,数据就不存在了
⽽sessionStorage只要同源的同窗⼝中,刷新页⾯或进⼊同源的不同页⾯,数据始终存在,也就是说只要浏览器不关闭,数据仍然存在
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论