session、cookie、sessionStorage、localStorage的简要理解

一、cookie和session

  首先 session 和 cookie 用于浏览器客户端与服务端数据交互,通过会话的方式跟踪浏览器用户身份。

1、cookie

  (1)、一般由服务器生成,可以设置失效时间,如果是浏览器生成则默认浏览器关闭后失效;

  (2)、与服务器端通信,每次请求都放在 http 请求头中;

  (3)、数据存储在内存中,数据大小为4KB,保存在类型为字符串;

2、session

  (1)、服务端接收到客户端发送的请求,需要创建 session 对象,此时会检查客户端请求是否包含 sessionID,服务端根据这个 id 创建 session 对象,如果客户端没有给,则服务端会创建一个新的 session , sessionID 会被返回给客户端,这个 id 会被保存在客户端的 cookie 中;

  (2)、如果用户禁用 cookie, 则要使用 URL 重写,浏览器不支持 cookie 的时候,会重写 URL 将 sessionID 拼接到访问地址后;

  (3)、通过类似 HashTable 的数据结构来进行存储,没有大小限制;

  相比cookie而言session的安全性更好,seesionID存储在cookie中,要攻破session需要先攻破cookie;而且sessionID是加密的,sessionID是有人登陆或者启动session_start才会有;在第二次启动session_start后,之前的sessionID就会失效,所以session安全性更好。

二、WebStorage

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

1、生命周期:

  localStorage的生命周期是永久的,关闭页面或浏览器之后localStorage中的数据也不会消失。localStorage除非主动删除数据,否则数据永远不会消失。
  sessionStorage的生命周期是在仅在当前会话下有效。sessionStorage引入了一个“浏览器窗口”的概念,sessionStorage是在同源的窗口中始终存在的数据。只要这个浏览器窗口没有关闭,即使刷新页面或者进入同源另一个页面,数据依然存在。但是sessionStorage在关闭了浏览器窗口后就会被销毁。同时独立的打开同一个窗口同一个页面,sessionStorage也是不一样的。

2、存储大小:

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

3、存储位置:

  localStorage和sessionStorage都保存在客户端,不与服务器进行交互通信。

扫描二维码关注公众号,回复: 7024802 查看本文章

4、存储类型:  

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

WebStorage由于不会传送到服务器,所以更安全,也能节省网络流量,存储数据也比cookie要大,存储在本地也使得读取数据更快,因为存在伪造问题,不建议存储敏感信息

每日壹题:

  var 、let 、const 区别?

  • var 和 let 用以声明变量,const 用于声明只读的常量;
  • var 声明的变量,不存在块级作用域,在全局范围内都有效,let 和 const 声明的,只在它所在的代码块内有效;
  • let 和 const 不存在像 var 那样的 “变量提升” 现象,所以 var 定义变量可以先使用,后声明,而 let 和 const 只可先声明,后使用;
  • let 声明的变量存在暂时性死区,即只要块级作用域中存在 let,那么它所声明的变量就绑定了这个区域,不再受外部的影响;
  • let 不允许在相同作用域内,重复声明同一个变量;
  • const 在声明时必须初始化赋值,一旦声明,其声明的值就不允许改变,更不允许重复声明;

猜你喜欢

转载自www.cnblogs.com/tg666/p/11355465.html
今日推荐