session,cookie,sessionStorage,localStorage的区别

一、Cookie 和 Session区别

1、cookie数据存放在客户的浏览器上,session数据放在服务器上 

2、cookie安全性较低,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session 

3、cookie大小受限, 单个cookie保存的数据不能超过4KB,很多浏览器都限制一个站点最多保存20个cookie 

4、session会在一定时间内保存在服务器上,当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie 

5、建议将登录信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中 

6、session保存在服务器,客户端不知道其中的信心;cookie保存在客户端,服务器能够知道其中的信息 

7、session中保存的是对象,cookie中保存的是字符串 

8、session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到,而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的

二、webStorage

WebStorage的目的是克服由cookie所带来的一些限制,当数据需要被严格控制在客户端时,不需要持续的将数据发回服务器。

WebStorage两个主要目标:(1)提供一种在cookie之外存储会话数据的路径。(2)提供一种存储大量可以跨会话存在的数据的机制。

HTML5的webStorage提供了两种API: localStorage (本地存储) 和 sessionStorage(会话存储)

1、生命周期:

  localStorage:

    localStorage的生命周期是永久的,关闭页面或浏览器之后localStorage中的数据也不会消失。localStorage除非主动删除数据,否则数据永远不会消失。

  sessionStorage:

    sessionStorage的生命周期是在仅在当前会话下有效。

    sessionStorage引入了一个“浏览器窗口”的概念,sessionStorage是在同源的窗口中始终存在的数据。

    只要这个浏览器窗口没有关闭,即使刷新页面或者进入同源另一个页面,数据依然存在。

    但是sessionStorage在关闭了浏览器窗口后就会被销毁。

    同时独立的打开同一个窗口同一个页面,sessionStorage也是不一样的。

2、存储大小:localStorage和sessionStorage的存储数据大小一般都是:5MB

3、存储位置:localStorage和sessionStorage都保存在客户端,不与服务器进行交互通信。

4、存储内容类型:localStorage和sessionStorage只能存储字符串类型,对于复杂的对象可以使用ECMAScript提供的JSON对象的stringify和parse来处理

5、获取方式:localStorage:window.localStorage;sessionStorage:window.sessionStorage;。

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

WebStorage的优点:

(1)存储空间更大:cookie为4KB,而WebStorage是5MB;

(2)节省网络流量:WebStorage不会传送到服务器,存储在本地的数据可以直接获取,也不会像cookie一样美词请求都会传送到服务器,所以减少了客户端和服务器端的交互,节省了网络流量;

(3)对于那种只需要在用户浏览一组页面期间保存而关闭浏览器后就可以丢弃的数据,sessionStorage会非常方便;

(4)快速显示:有的数据存储在WebStorage上,再加上浏览器本身的缓存。获取数据时可以从本地获取会比从服务器端获取快得多,所以速度更快;

(5)安全性:WebStorage不会随着HTTP header发送到服务器端,所以安全性相对于cookie来说比较高一些,不会担心截获,但是仍然存在伪造问题;

(6)WebStorage提供了一些方法,数据操作比cookie方便;

     setItem (key, value) ——  保存数据,以键值对的方式储存信息。

          getItem (key) ——  获取数据,将键值传入,即可获取到对应的value值。

          removeItem (key) ——  删除单个数据,根据键值移除对应的信息。

          clear () ——  删除所有的数据

          key (index) —— 获取某个索引的key

原文地址:https://www.cnblogs.com/fan-jing/p/10557224.html