session、cookie、webstorage的区别

news/2024/5/18 14:29:39 标签: 前端, session, cookie, web storage

Cookie

Cookie实际上是一小段的文本信息,是服务器发送到用户浏览器并保存在本地的一小块数据。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端会把Cookie保存起来。当浏览器下次向同一服务器再发起请求时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。Cookie 使基于无状态的 HTTP 协议记录稳定的状态信息成为了可能。

会话 Cookie 和持久 Cookie

  • 会话Cookie:若不设置过期时间,则表示这个Cookie的生命期为浏览器会话期间,关闭浏览器窗口,Cookie就消失。这种生命期为浏览器会话期的 Cookie 被称为会话 Cookie。会话Cookie一般不存储在硬盘上而是保存在内存里。

  • 持久Cookie:若设置了过期时间,浏览器就会把 Cookie 保存到硬盘上,关闭后再次打开浏览器,这些 Cookie 仍然有效直到超过设定的过期时间。存储在硬盘上的 Cookie 可以在浏览器的不同进程间共享。

JavaScript设置cookie、读取cookie、删除cookie详解


Session

Session是另一种记录客户状态的机制,不同的是 Session 保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。浏览器再次访问时只需要从该 Session 中查找该客户的状态就可以了。当客户端关闭会话,或者 Session 超时失效时会话结束。用户与服务器建立连接的同时,服务器会自动为其分配一个SessionId,来标识用户的唯一身份。

Session机制

  • 当服务器收到请求需要创建Session对象时,首先会检查客户端请求中是否包含Sessionid。
  • 如果有Sessionid,服务器将根据该id返回对应Session对象;如果客户端请求中没有Sessionid,服务器会创建新的Session对象,并把Sessionid在本次响应中返回给客户端。
  • 通常使用 Cookie 方式存储 Sessionid 到客户端,在交互中浏览器按照规则将Sessionid发送给服务器。
  • 如果用户禁用Cookie,则要使用URL重写,可以通过response.encodeURL(url) 进行实现;当浏览器支持Cookie时,url 不做任何处理;当浏览器不支持Cookie的时候,将会重写 URL 将SessionID拼接到访问地址后。

Web Storage

Web Storage实际上由两部分组成:sessionStorage与localStorage 。

  • sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。
  • localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。

特点

  • Web Storage根据浏览器的不同,存储容量可以达到5-10M之间;

  • 存储内容不会发送到服务器:当设置了Cookie后,Cookie的内容会随着请求一并发送的服务器,这对于本地存储的数据是一种带宽浪费。而Web Storage中的数据则仅仅是存在本地,不会与服务器发生任何交互。

  • 独立的存储空间:每个域(包括子域)有独立的存储空间,各个存储空间是完全独立的,因此不会造成数据混乱。

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


sessioncookie_39">sessioncookie的区别

  1. 对象不同
    cookie:是针对每个网站的信息,每个网站只能对应一个,其他网站无法访问,这个文件保存在客户端,每次访问相应网站,浏览器都会查找该网站的 cookies,如果有,则会将该文件发送出去。cookies文件的内容大致上包括了诸如用户名、密码、设置等信息。
    session:是针对每个用户的,只有客户端才能访问,程序为该客户添加一个 sessionsession中主要保存用户的登录信息、操作信息等等。此 session将在用户访问结束后自动消失(如果也是超时)。

  2. 存储数据大小不同
    cookie:根据国际互联网标准,每个网站可以存储的 Cookie 数量不得超过 300 个,每个 Cookie 的大小不得超过 4096 字节(4 KB)。如果超出了这个限制,浏览器会自动删除旧的 Cookie 以释放空间。
    sessionsession存储在服务器上可以任意存储数据。当 session存储数据太多时,服务器可选择进行清理。

  3. 生命周期不同
    cookiecookie的生命周期当浏览器关闭的时候就消亡了,cookie的生命周期是累计的,从创建时就开始计时,30min后cookie生命周期结束。
    sessionsession的生命周期是间隔的,从创建时开始计时如在30min内没有访问session,那么session生命周期就被销毁。

  4. 存储位置不同
    cookiecookie数据保存在客户端。
    sessionsession数据保存在服务器端。

5. 数据类型不同

两者都是key-value结构,但针对value的类型是有差异的。

cookie:value只能是字符串类型。

session:value是object类型。

6. 安全性不同

cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,如果主要考虑到安全应当使用session


Cookie和Web Storage的区别

  1. 存储空间更大
    cookie为4KB,而Web Storage是5-10MB;

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

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

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

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

  6. WebStorage 提供比cookie更方便的数据操作的方法


http://www.niftyadmin.cn/n/4984762.html

相关文章

行业追踪,2023-08-30

自动复盘 2023-08-30 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…

Spring Boot Dubbo Zookeeper(含ZK安装脚本)

文章目录 Spring Boot Dubbo Zookeeper&#xff08;含ZK安装脚本&#xff09;简介DubboCommonProviderConsumer Zookeeper Spring Boot Dubbo Zookeeper&#xff08;含ZK安装脚本&#xff09; 简介 Dubbo Common 公共依赖 <!-- Spring Boot Starter --> <dependen…

秒懂算法三

目录 1147 连续自然数和 原题链接 : 思路1 : (按照EK的讲解,hh) 求因子算法模板 : 代码 1 (数学): 思路 2(暴力) : 代码2(暴力) : P1125 [NOIP2008 提高组] 笨小猴 原题链接 : 思路 : 试除法判断质数算法模板 : 代码 : P1605 迷宫 原题链接 : 思路 : …

leetcode316. 去除重复字母(单调栈 - java)

去除重复字母 题目描述单调栈代码演示进阶优化 上期经典 题目描述 难度 - 中等 leetcode316. 去除重复字母 给你一个字符串 s &#xff0c;请你去除字符串中重复的字母&#xff0c;使得每个字母只出现一次。需保证 返回结果的字典序最小&#xff08;要求不能打乱其他字符的相对…

二十、农作物病虫害识别模型

1、准备数据集 可以从https://www.kaggle.com/datasets中下载,Kaggle是一个数据建模和数据分析竞赛平台。企业和研究者可在其上发布数据,统计学者和数据挖掘专家可在其上进行竞赛以产生最好的模型。 为了测试,可以使用作为训练数据一部分的验证数据进行评估。 2、模…

element 级联选择框偏移

如图所示&#xff0c;选择之后&#xff0c;位置跑到了左上角 添加:append-to-body"false",在弹出框的定位出现问题时&#xff0c;可将该属性设置为 false

雪花算法实现原理和精度失效问题

一、雪花算法的实现原理 雪花算法是一个全局唯一算法&#xff0c;它主要出现在像分库分表场景中作为业务主键、 或者作为一些像订单号这类的 id 生成器。 所以单纯就全局唯一性质来说&#xff0c;有很多的实现方式&#xff0c;比如 UUID &#xff0c; Redis 的原子递增 &#…

ssm+vue高校实验室管理系统源码和论文

ssmvue高校实验室管理系统源码和论文081 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 一&#xff0e;毕业设计的内容 本高校实验室管理系统采用Java语言、MySQL数据库&#xff0c;基于SSM框架进行开发设计&…