## cookie、session、localStorage、sessionStoragecookie:cookie存放在客户的浏览器上,单个cookie保存的数据不能超过4K;如果不在浏览器中设置过期时间,cookie保存在内存中,生命周期随浏览器的关闭而结束,这种cookie简称会话cookie;如果浏览器中设置了cookie的过期时间,cookie被保存在硬盘中,关闭浏览器后,cookie数据仍然存在,直到过期了才消失;>应用场景:(1)判断用户是否登录过网站,以便下次登录时能够实现自动登录(或记住密码)。(2)保存上次登录的事件等信息。(3)保存上次查看的页面(4)浏览计数session:session会在一定时间内存放在服务器上,保存的东西越多,就越占用服务器内存;安全性比cookie高,需要依赖cookie存在;>应用场景:(1)网上商城中的购物车(2)保存用户登录信息(3)将某些数据放入session中,供同一用户的不同页面使用(4)防止用户非法登录localStorage:localStorage生命周期是永久,意味着除非用户显示在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在。存放数据大小为一般为5MB,而且它仅在客户端(即浏览器)中保存,不参与和服务器的通信。sessionStorage:sessionStorage仅在当前会话下有效,关闭页面或浏览器后被清除。存放数据大小为一般为5MB,而且它仅在客户端(即浏览器)中保存,不参与和服务器的通信。 ## localStorage、sessionStorage、cookie、session区别特性localStoragesessionStorageCookieSession
定义
用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去除。
用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。
客户端保存用户信息的一种机制,用来记录用户的一些信息。Cookie是服务器在本地机器上存储的一小段文本,并随着每次请求发送到服务器。Cookie技术通过请求和响应报文中写入Cookie信息来控制客户端的状态。
在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;session的运行依赖 session id, sessionid 是存在 cookie 中,如果浏览器禁用了 cookie ,同时 session 也会失效
存放位置
保存在浏览器端,且是同源的
保存在服务器上
存储方式
持久化的本地存储
会话级别的存储,不能持久保持;
Cookie数据存放在客户的浏览器上
Session数据放在服务器上,服务端的session的实现对客户端的cookie有依赖关系的;
生命周期
存储的数据没有时间限制,除非被手动清除,否则将会永久保存
针对一个session进行数据存储。仅在当前网页会话下有效,关闭页面或浏览器后就会被清除
可设置失效时间,没有设置的话,默认是关闭浏览器后失效
没有设置session的生存期,则sessionID一直存在客户端内存中,直到浏览器关闭(浏览器进程退出)后sessionID自动注销。重新请求该页面后,重新注册一个session ID。如果客户端没有禁用cookie,cookie扮演的是存储sessionID和session生存期的角色。
存放数据大小
可以保存5MB的信息
存储容量有限制,单个cookie 保存数据不能超过4k,且很多浏览器限制一个站点最多保存20个cookie。
session默认大小一般是1024k
存储大小
为了更大容量存储设计的
Cookie大小受限,并且每次请求一个新的页面时Cookie都会被发送过去,这样无形中浪费了带宽
作用域
localStorage在所有同源窗口是共享的,支持跨域调用
sessionStorage 不在不同的浏览器窗口中共享,即使是同一个页面,支持跨域调用
cookie 在所有同源窗口是共享的,cookie需要指定作用域,不可以跨域调用
HTTP请求
webStorage不会再请求中携带,仅仅在本地存储,仅在客户端(即浏览器)中保存,不参与和服务器的通信
cookie 数据始终在同源的http请求中携带,如果使用Cookie保存过多数据会带来性能问题
方法
Web Storage拥有setItem,getItem,removeItem,clear等方法
cookie需要前端开发者封装setCookie,getCookie
作用
Web Storage仅仅是为了在本地“存储”数据而生
Cookie也是不可或缺的:Cookie的作用是与服务器进行交互,作为HTTP规范的一部分而存在 。
安全性能
Web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者。
Cookie不是很安全,别人可以分析存放在本地的Cookie并进行Cookie欺骗。 考虑到安全应当使用Session。
Session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用Cookie。
## cookie、session区别* cookie 存储于浏览器端,而 session 存储于服务端* cookie 的安全性相比于 session 较弱,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session。* session 会在一定时间内保存在服务器上。当访问增多时,会占用服务器的资源,所以考虑到服务器性能方面,可以使用cookie* cookie 存储容量有限制,单个cookie 保存数据不能超过4k,且很多浏览器限制一个站点最多保存20个cookie。而对于 session ,其默认大小一般是1024k## cookie、sessionStorage、localStorage 异同点 共同点:都保存在浏览器端,且是同源的区别:* cookie 数据始终在同源的http请求中携带,而 webStorage 不会再请求中携带,仅仅在本地存储* 存储大小区别,cookie 是4k,webStorage 可以达到5M甚至更大* 数据有效时间区别: sessionStorage 仅仅是会话级别的存储,它只在当前浏览器关闭前有效,不能持久保持;localStorage 始终有效,即使窗口或浏览器关闭也一直有效,除非用户手动删除,其才会失效;cookie 只在设置的 cookie 过期时间之前一直有效。* 作用域区别:sessionStorage **不在不同的浏览器窗口中共享**,即使是同一个页面; localStorage 和 cookie 在所有同源窗口是共享的* Web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者。Web Storage 的 api 接口使用更方便。### web storage和cookie的区别Web Storage的概念和cookie相似,区别是它是为了更大容量存储设计的。Cookie的大小是受限的,并且每次你请求一个新的页面的时候Cookie都会被发送过去,这样无形中浪费了带宽,另外cookie还需要指定作用域,不可以跨域调用。Web Storage拥有setItem,getItem,removeItem,clear等方法,不像cookie需要前端开发者自己封装setCookie,getCookie。但是Cookie也是不可以或缺的:Cookie的作用是与服务器进行交互,作为HTTP规范的一部分而存在 ,而Web Storage仅仅是为了在本地“存储”数据而生。Cookies:服务器和客户端都可以访问;大小只有4KB左右;有有效期,过期后将会删除;本地存储:只有本地浏览器端可访问数据,服务器不能访问本地存储直到故意通过POST或者GET的通道发送到服务器;每个域5MB;没有过期数据,它将保留知道用户从浏览器清除或者使用Javascript代码移除
