Cookie,session, localStorage 区别

cookie机制:
正统的cookie分发是通过扩展http协议来实现的,服务端通过在http的响应头加上一行特殊的只是以提示浏览器按照指定生成相应的cookie.cookie的使用是由浏览器按照一定的原则在后台自动发送给服务端的。

cookie的内容包括:名字、值、过期时间、路径和域;路径和域一起构成cookie的作用范围。

若不设置过期时间,则表示这个这个cookie的生命期为浏览器回话期间,关闭浏览器,cookie就会消失,这种生命期为浏览器回话期的cookie被称为会话cookie.会话cookie一般存在内存里。
若设置了过期时间,浏览器就会把cookie保存在硬盘里,关闭后再次打开浏览器,没有超过过期时间,cookie仍然有效,存储在硬盘上的cookie可以在不同浏览器进程间共享。

session机制:
对于保存在内存里的cookie,不同的浏览器有不同的session机制,session机制是一种服务端的机制。

当程序需要为某个客户端的请求创建一个session时,服务端首先检查这个客户端的请求里是否已包含了一个session标识(session id),如果有,服务端就按照这个标识检索,检索不到就新建一个,生成一个与此session相关联的标识,这个session id将在本次响应中返回给客户端保存。

session id是不重复,不容易找到规律的字符串。

cookie 和 session 的区别
1、cookie数据存放在客户端浏览器上,session数据放在服务器上
2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗考虑到安全应该使用session
3、session会在一定时间内保存在服务器,当访问增多,会比较占用服务器性能,考虑到减轻服务器性能方面,应使用cookie
4、单个cookie保存的数据不能超过4k,很多浏览器一个站点最多保存20个cookie
5、可以将登陆信息保存在session
6、session保存的是对象,cookie保存的是字符串
7、session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到;而cookie中如果设置了路径参数,那么在同一个网站中不同路径下cookie互相访问不到


sessionStorage\localStorage\cookie都是浏览器端存储的数据
sessionStorage引入了一个浏览器窗口的概念,是在同源同窗口内,始终存在的数据,也就是浏览器不关闭,即使刷新或进入同源另一个页面,数据仍然存在;关闭窗口后即被销毁;同时独立打开不同窗口,即使是同一页面,sessionStorage对象也是不同的

sessionStorage\localStorage\cookie区别:
共同点:都是保存在浏览器端,且同源的
区别:
1、cookie数据在同源的http请求中携带,即在浏览器和服务器间来回传递;而sessionStorage和localStorage 不会自动把数据发给服务器,仅在本地保存
2、cookie有路径概念,可以限制cookie只属某个路径
3、存储大小限制不同:cookie不能超过4k,sessionStorage和localStorage可以达到5M或更大
4、有效期不同:sessionStorage仅在当前浏览器窗口关闭前有效,不能持久保存;localStorage始终有效,窗口或浏览器关闭也一直保存,可做持久保存;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭
5、作用域不同:sessionStorage不在不同浏览器窗口中共享;localStorage 和cookie在所有同源窗口中都是共享的;

Web Storage(sessionStorage\localStorage)带来的好处:
减少网络流量:一旦数据保存在本地后,就可以避免再向服务器请求数据,减少请求次数
性能好:从本地读数据比通过网络从服务器获得数据快的多
临时存储:很多时候数据只需要在用户浏览一组页面期间使用,关闭窗口后数据就可以丢弃了,这种情况使用sessionStorage非常方便

操作方式:
window.localStorage和window.sessionStorage
Storage类的相关成员如下:
这里写图片描述
其用法:
设置参数:localStorage.setItem(‘age’, 40);
获取数据: = .getItem(‘age’);
删除数据:localStorage.removeItem(‘age’);
删除所有的键值对:localStorage.clear();

cookie
需要开发者自己封装setCookie,getCookie

应用场景:
cookie:记录登陆信息
localStorage: 购物车,网站访问计数
sessionStorage:多步骤引导用户填写信息,同窗口信息记录传递

安全性考虑:
xss注入风险,不要存储敏感数据

浏览器本地存储与服务器存储的区别:
1、浏览器可以保存一些数据,需要的时候直接从本地获取,例如sessionStorage、localStorage和cookie
2、服务器也可以保存所有用户的数据,但需要的时候浏览器要想服务器请求数据
a、保存用户的持久数据:数据库和云存储将用户的大量数据保存在服务器端
b、保存用户的临时会话数据,服务器端的session机制:jsp的session,有效期即在服务端设置的session有效期
3、服务端保存所有用户的数据,开销大;浏览器端保存则把不同用户需要的数据分布保存在用户各自的浏览器中
4、浏览器一般用来存储小数据,服务器存储大数据或小数据


一题
浏览器在一次 HTTP 请求中,需要传输一个 4097 字节的文本数据给服务端,可以采用那些方式?e

  a.存入indexDB

  b.写入cookie

  c.放在url参数

  d.写入session

  e.使用post

  f.放在local storage

解析: IndexdDB 是 HTML5 的本地存储,把一些数据存储到浏览器(客户端)中,当与网络断开时,可以从浏览器中读取数据,用来做一些离线应用。
    Cookie 通过在客户端 ( 浏览器 ) 记录信息确定用户身份,最大为 4 kb =4096b。
    url 参数用的是 get 方法,从服务器上获取数据,大小不能大于 2 kb 。
    Session 是服务器端使用的一种记录客户端状态的机制 。
    post 是向服务器传送数据,数据量较大。
    local Storage 也是 HTML5 的本地存储,将数据保存在客户端中(一般是永久的)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值