zoukankan      html  css  js  c++  java
  • session、cookie、sessionStorage、localStorage的简要理解

    一、cookie和session

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

    1、cookie

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

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

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

    2、session

       sessioncookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器的资源,但现在服务器已经发展至今,一些session信息还是绰绰有余的。

    3. session和cookie的结合使用

      web开发发展至今,cookiesession的使用已经出现了一些非常成熟的方案。在如今的市场或者企业里,一般有两种存储方式:

    1)、存储在服务端:通过cookie存储一个session_id,然后具体的数据则是保存在session中。如果用户已经登录,则服务器会在cookie中保存一个session_id,下次再次请求的时候,会把该session_id携带上来,服务器根据session_idsession库中获取用户的session数据。就能知道该用户到底是谁,以及之前保存的一些状态信息。这种专业术语叫做server side session

    2)、将session数据加密,然后存储在cookie中。这种专业术语叫做client side session

    二、WebStorage

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

    1、生命周期:

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

    2、存储大小:

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

    3、存储位置:

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

    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 在声明时必须初始化赋值,一旦声明,其声明的值就不允许改变,更不允许重复声明;
  • 相关阅读:
    try catch使用示例
    doxgen生成chm文档和乱码解决方法
    MFC中MessageBox()用法
    UML聚合与组合
    C#网络编程
    单元测试(NUnit)
    Autohotkey
    .NET中的并行
    System.Environment类的使用
    一键VHD
  • 原文地址:https://www.cnblogs.com/tg666/p/11355465.html
Copyright © 2011-2022 走看看