JS | 详解浏览器存储机制cookies、sessionStorage和localStorage的区别

                                                              F12在浏览器查看 

一、HTML4的本地存储——cookie

浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互。

cookie和session

cookie 和 session都是用来跟踪浏览器用户身份的会话方式。

区别:

1、保持状态:cookie保存在浏览器端,session保存在服务器端

2、使用方式

(1) cookie机制:

如果不在浏览器中设置过期时间,cookie被保存在内存中,生命周期随浏览器的关闭而结束,这种cookie简称会话cookie。如果在浏览器中设置了cookie的过期时间,cookie被保存在硬盘中,关闭浏览器后,cookie数据仍然存在,直到过期时间结束才消失。

Cookie是服务器发给客户端的特殊信息,cookie是以文本的方式保存在客户端,每次请求时都会带上它。

(2)  session机制:

当服务器收到请求需要创建session对象时,首先会检查客户端请求中是否包含sessionid。

如果有sessionid,服务器将根据该id返回对应session对象。如果客户端请求中没有sessionid,服务器会创建新的session对象,并把sessionid在本次响应中返回给客户端。通常使用cookie方式存储sessionid到客户端,在交互中浏览器按照规则将sessionid发送给服务器。

如果用户禁用cookie,则要使用URL重写,可以通过 response.encodeURL(url) 进行实现;API对encodeURL的结束为,当浏览器支持Cookie时,url不做任何处理;当浏览器不支持Cookie的时候,将会重写URL将SessionID拼接到访问地址后。

URL编码(encodeURL)‌的处理取决于浏览器对Cookie的支持情况。

当浏览器支持Cookie时,URL不需要进行额外的编码处理,即当浏览器支持Cookie时,URL不做任何处理;而当浏览器不支持Cookie时,需要对URL进行编码处理。这是因为Cookie和Session是Web应用中常用的两种会话跟踪技术,其中Cookie是在客户端(浏览器)中存储用户信息的技术,而Session则是在服务器端存储用户会话信息的技术。

当浏览器支持Cookie时,服务器可以将用户会话信息以Cookie的形式存储在客户端,从而避免在URL中进行额外的编码。这种方式不仅简化了URL的处理,还提高了用户体验,因为用户不需要在每次访问时都重新进行身份验证或状态维护‌。

具体来说,当浏览器支持Cookie时,服务器可以通过设置Cookie的存活期,决定Cookie是在浏览器会话结束时过期(会话Cookie)还是在特定时间后过期(持久Cookie)。会话Cookie保存在浏览器内存中,而持久Cookie则保存在用户的硬盘上。服务器通过HTTP响应头将Cookie发送给浏览器,浏览器在后续的请求中会将这些Cookie再次发送给服务器,从而实现了用户状态的保持。这种方式避免了在URL中进行复杂的编码处理,使得Web应用更加灵活和便捷‌。

然而,当浏览器不支持Cookie时,服务器需要将用户会话信息通过编码的方式附加到URL中,以便在多个请求之间保持用户状态。这种情况下,所有需要动态生成或修改的URL都需要进行编码处理,以确保用户会话信息的正确传递。这通常涉及到对URL的各个部分进行适当的编码,以确保信息的完整性和安全性‌。

综上所述,是否需要对URL进行编码处理取决于浏览器对Cookie的支持情况。如果浏览器支持Cookie,则不需要对URL进行额外的编码处理;如果浏览器不支持Cookie,则需要对URL进行适当的编码处理,以确保用户会话信息的正确传递和Web应用的正常运作。

3、存储内容:cookie只能保存字符串类型,以文本的方式;session通过类似与Hashtable的数据结构来保存,能支持任何类型的对象(session中可含有多个对象)

4、存储的大小:cookie:单个cookie保存的数据不能超过4kb;session大小没有限制

5、安全性:cookie:针对cookie所存在的攻击:Cookie欺骗,Cookie截获;session的安全性大于cookie。

原因如下:

(1) sessionID存储在cookie中,若要攻破session首先要攻破cookie;

(2) sessionID是要有人登录,或者启动session_start才会有,所以攻破cookie也不一定能得到sessionID;

(3) 第二次启动session_start后,前一次的sessionID就是失效了,session过期后,sessionID也随之失效。

(4) sessionID是加密的

(5) 综上所述,攻击者必须在短时间内攻破加密的sessionID,这很难。

6、应用场景:

cookie:

(1)判断用户是否登陆过网站,以便下次登录时能够实现自动登录(或者记住密码)。如果我们删除cookie,则每次登录必须重新填写登录的相关信息。

(2)保存上次登录的时间等信息。

(3)保存上次查看的页面

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

儒雅的烤地瓜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值