zoukankan      html  css  js  c++  java
  • cookie,session,webStorage的区别

    一、cookie和session

    cookie和session都是用来跟踪浏览器用户身份的会话方式。

    区别:

    1、保持状态:cookie保存在浏览器端,session保存在服务器端

    2、使用方式:

    (1)cookie机制:如果不在浏览器中设置过期时间,cookie被保存在内存中,生命周期随浏览器的关闭而结束,这种cookie简称会话cookie。如果在浏览器中设置了cookie的过期时间,cookie被保存在硬盘中,关闭浏览器后,cookie数据仍然存在,直到过期时间结束才消失。

    Cookie是服务器发给客户端的特殊信息,cookie是以文本的方式保存在客户端,每次请求时都带上它

    (2) session机制:当服务器收到请求需要创建session对象时,首先会检查客户端请求中是否包含sessionid。如果有sessionid,服务器会根据sessionid返回对应的session对象。如果客户端请求中没有sessionid,服务器就会创建新的session对象,并把sessionid在本次的响应中返回给客户端。通常使用cookie方式存储sessionid到客户端,如果用户禁用cookie,则要使用URL重写,可以通过respones。encodeURL(url)来实现;API对encodeURL的结束为,当浏览器不支持cookie的时候,将会重写URL将SessioniD拼接到访问地址后。

    3.存储的内容:cookie只能存储字符串类型,以文本的方式;session通过类似与Hashtable的数据结构来保存,能支持任何类型的对象

    4.存储的大小:cookie:单个cookie保存的数据不能超过4kb;session大小没有限制;

    5.安全性session的安全性不较高,因为sessionID是存储在cook当中的,sessionId是加密的

    6.应用场景

    cookie:(1)判断用户是否登录过网站,以便下次登录时能够实现自动登录(或者记住密码)。如果我们删除cookie,则每次登录必须从新填写登录的相关信息。

    (2)保存上次登录的时间等信息。

    (3)保存上次查看的页面

    (4)浏览技术。

    seesion:Session用于保存每个用户的专用信息,变量的值保存在服务端,通过sessionId来区分不同的用户。

    (1)网上商城中的购物车

    (2)保存用户的登录信息

    (3)将某些数据放到seesion中共同一用户的不同页面使用

    (4)防止用户的非法登录

    7.缺点:cookie:(1)大小受限

    session:(1)session保存的东西越多,就占用服务器内存,对于用户在线人数较多,服务器的内存压力比较大。

    (2)依赖cookie

    web Storage :webStorage存储机制是对Html中cookie存储机制的一个改善。

    1.seesionStorage:将数据保存在session对象中。所谓session,是指用户在浏览器某个网站时,从进入到网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。session对象可以用来保存这段时间内要求保存的任何数据。

    2.localStorage:将数据保存在客户端本地的硬件设备,即使在浏览器关闭了,该数据任然存在,下次打开仍然存在,下次可以继续使用。

    这两者的区别在于,sessionStorage(会话存储)为临时保存,而localStorage为永久保存。

     

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

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

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

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

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

     

    (1)sessionStorage

    保存数据的方法:

    sessionStorage.setItem("key","value");
    //或者写成
    sessionStorage.key="value";

    读取数据的方法:

    变量=sessionStorage.getItem("key");
    //或者写成
    变量=sessionStorage.key;

    (2)localStorage

    保存数据的方法:

    localStorage.setItem("key","value");
    //或者写成
    localStorage.key="value";

    读取数据的方法:

    变量=localStorage.getItem("key");
    //或者写成
    变量=localStorage.key;

    原文链接:https://www.cnblogs.com/pengc/p/8714475.html

  • 相关阅读:
    判断是否微信浏览器,是的话,加入自己想加的功能
    Spring MVC源码(三) ----- @RequestBody和@ResponseBody原理解析
    Spring MVC源码(二) ----- DispatcherServlet 请求处理流程 面试必问
    Spring MVC源码(一) ----- 启动过程与组件初始化
    spring5 源码深度解析----- IOC 之 bean 的初始化
    spring5 源码深度解析-----IOC 之 循环依赖处理
    spring5 源码深度解析-----IOC 之 属性填充
    spring5 源码深度解析----- IOC 之 bean 创建
    spring5 源码深度解析----- IOC 之 开启 bean 的加载
    spring5 源码深度解析----- IOC 之 自定义标签解析
  • 原文地址:https://www.cnblogs.com/ximenchuifa/p/14165010.html
Copyright © 2011-2022 走看看