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。session大小没有限制。
5、建议将登录信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中
6、session保存在服务器,客户端不知道其中的信心;cookie保存在客户端,服务器能够知道其中的信息
7、session中保存的是对象,cookie中保存的是字符串
8、session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到,而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的
seesion比cookie安全性高
(1)sessionid存储在cookie中,若要攻击session首先要攻破cookie;
(2)sessionid是要有人登录,或者启动session_start才会有,所以攻破cookie也不一定能得到sessionid。
(3)第二次启动session_start后,前一次的sessionid就失效了,session过期后,sessionId也失效了。
(4)sessionId是加密的
(5)综上所述,攻击者必须在短时间内攻破加密sessionid,这很难。

三、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非常方便

五、浏览器本地存储与服务器端存储的区别

其实数据既可以在浏览器本地存储,也可以在服务器端存储
浏览器可以保存一些数据,需要的时候直接从本地存取,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只要同源的同窗口中,刷新页面或进入同源的不同页面,数据始终存在,也就是说只要浏览器不关闭,数据仍然存在

八、cookie和seesion应用场景

cookie:(1)判断用户是否登陆过网站,以便下次登录时能够实现自动登录。如果我们删除cookie,则每次登录必须中心填写登录的相关信息。
(2)保存上次登录的时间等信息
(3)保存上次查看的页面
(4)浏览计数
**session:**用于保存每个用户的专用信息,变量的值保存在服务器端,通过sessionid来区分不同的客户。
(1)网上商城中的购物车
(2)保存用户登录信息
(3)将某些数据放入session中,供同一用户的不同页面使用。
(4)防止用户非法登录

九、cookie和session的缺点

缺点:
cookie:(1)大小受限制
(2)用户可以操作cookie,是功能受限
(3)安全性较低
(4)有些状态不可能保存在客户端
(5)每次访问都要传送cookie给服务端,浪费宽带
(6)cookie数据有路径的概念,可以限制cookie只属于某路径下。
session:(1)session保存的东西越多,就约占用服务器内存,对于用户在线人数较多的网站,服务器的内存压力会比较大。
(2)依赖于cookie,如果金庸cookie,则要使用url重写,不安全
(3)创建session变量有很大的随意性,可随时调用,不需要开发者做精确的处理,所以,过度使用session变量将会导致代码不可读而且不好维护

十、loaclStorage和sessionStorage应用场景

ocalStorage:常用于长期登录(+判断用户是否已登录),适合长期保存在本地的数据。
sessionStorage:敏感账号一次性登录

十一、WebStorage的优点

1)存储空间更大:cookie为4kb,而webStorage是5MB
(2)节省网络流量:webstorage不会传送到服务器,存储在本地的出局可以直接获取,不会像cookie一样每次请求都会传送到服务器,所以减少了客户端和服务器端的交互,节省了网络流量。
(3)对于那种只需要在用户浏览一组页面期间保存而关闭浏览器后就可以丢弃的数据,sessionstorage回非常方便
(4)快速显示:获取数据从本地获取比从服务器获取快的多
(5)安全性:webstorage不会随着http header发送到服务器端,所以安全性比cookie高些,不会担心截获,但仍存在伪造问题
(6)WebStorage提供一些方法,数据操作比cookie方便
setItem(key,value) ----- 保存数据,以键值对的方式对存储信息
getItem(key)-------获取数据,将键值传入,即可获取对应的value值
removeIItem(key)------删除单个数据
clear() ----- 删除所有数据
key(index)----- 获取某个索引的key

参考1:https://blog.csdn.net/diwang_718/article/details/105487210
参考2:https://www.cnblogs.com/zr123/p/8086525.html

localStoragesessionStoragecookiesession是在Web开发中常用的四种数据存储方式,它们有以下区别: 1. localStoragelocalStorage是HTML5中引入的一种客户端存储数据的方式,数据存储在浏览器的本地,不会过期。存储的数据可以在同一个域名下的不同页面间共享。 2. sessionStoragesessionStorage也是HTML5中引入的一种客户端存储数据的方式,数据存储在浏览器的本地,但与localStorage不同的是,sessionStorage的数据只在当前会话有效,会话结束后数据会被清除。 3. cookiecookie是一种通过服务器发送给浏览器并保存在本地的小型文本文件,用于存储少量的数据。它可以设置过期时间,过期后会被浏览器自动删除。cookie的数据会在同一个域名下的所有页面间共享。 4. sessionsession是服务器端存储用户信息的一种机制。当用户访问Web应用时,服务器会为每个用户创建一个对应的session对象,用于存储用户的会话状态信息。session数据存储在服务器上,客户端只保存一个session ID,通过该ID与服务器进行交互。 总结来说,localStoragesessionStorage是浏览器端的存储方式,cookiesession是服务器端的存储方式。localStoragesessionStorage可以在浏览器端直接操作,而cookiesession需要通过HTTP请求与服务器交互。localStoragesessionStorage可以存储较大量的数据,而cookie一般只能存储4KB左右的数据。session数据存储在服务器上,相对安全,而cookielocalStorage/sessionStorage的数据存储在本地,相对不那么安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值