session、cookie、webstorage的区别

这篇具有很好参考价值的文章主要介绍了session、cookie、webstorage的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 来处理


session和cookie的区别

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

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

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

  4. 存储位置不同
    cookie:cookie数据保存在客户端。
    session:session数据保存在服务器端。

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更方便的数据操作的方法文章来源地址https://www.toymoban.com/news/detail-682948.html

到了这里,关于session、cookie、webstorage的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Session与Cookie的区别(五)

    小明的故事说完了,该来把上面这一段变成网络的实际案例了。其实在网络世界中问题也是一样的。 前面已经提到过我们会把状态存在 Cookie 里面,让 Request 之间能够变得有关联。 假设我们今天要来做一个会员系统,那我要怎么知道这个 Request 代表的是哪一个会员? 最直觉

    2024年02月13日
    浏览(26)
  • cookie、session、token的区别

    HTTP无状态 当登录一个大部分网站的时候,第一次登录之后,之后的很长一段时间当我们再次访问网站的时候都不需要我们再次登录了,这个是怎么回事呢? 我们都知道http是无状态的,什么是无状态:关闭网页,再次访问服务器,服务器是不能知道是你在访问。所以就是靠接

    2024年02月08日
    浏览(25)
  • Session与Cookie的区别(三)

    让我们先从比喻回到网络世界里,HTTP 是无状态的,所以每一个 Request 都是不相关的,就像是对小明来说每一位客人都是新的客人一样,他根本不知道谁是谁。 既然你没办法把他们关联,就代表状态这件事情也不存在。 把左边换成顾客,右边换成小明也依然成立。多一个得是

    2024年02月14日
    浏览(29)
  • cookie、session和token的区别

    作用:三者的作用是在浏览器上保存用户的登录态,其实就是实现用户在网页上登录过一次后,一段时间内再次访问不需要重新登录,会实现自动登录的一个效果。 cookie: 是客户端用来存放数据的一个容器,大小约为4k,是服务器发送到用户浏览器并保存在本地的一小块数据

    2024年02月14日
    浏览(34)
  • Cookie与Session的区别及如何选择

    目录 Cookie Session 如何选择 在网站开发中,Cookie与Session是两种常见的数据管理方式,它们在不同情况下有各自的优势和劣势。在这篇文章中,我们将深入了解Cookie与Session之间的区别,并提供了一些建议,帮助您在实际应用中选择合适的方式。 1. 定义: Cookie是一小段文本信息

    2024年02月09日
    浏览(28)
  • Token,Cookie和Session三者的区别

    在做各种接口测试时,经常会碰到请求参数为token的类型,但是可能大部分测试人员对token,cookie,session的区别还是一知半解。 cookie是服务器端生成发送给客户端在客户端保存的 session是放在服务器端来和客户端的cookie做匹配的 Token是为了解决客户端频繁向服务端请求数据,服

    2024年02月04日
    浏览(28)
  • Java 实战介绍 Cookie 和 Session 的区别

    HTTP 是一种不保存状态的协议,即无状态协议,HTTP 协议不会保存请求和响应之间的通信状态,协议对于发送过的请求和响应都不会做持久化处理。 无状态协议减少了对服务压力,如果一个服务器需要处理 百万级用户 的请求状态,对服务器的压力无疑的是巨大的。 无状态的

    2024年02月08日
    浏览(30)
  • 简述一下cookie、session以及token的区别

    相同都是用来签权服务器的,不同的是主要是存储位置和存储容量 cookie数据存放在客户的浏览器上、session数据放在服务器内存上、token存储在服务器数据库上 cookie 单个4kb,不超过20个;session不限制 token是接口测试时鉴权码,其实也就是一个字符串,一般情况下登陆后才可以

    2024年04月14日
    浏览(32)
  • 【软件测试】cookie、session和token的区别

    今天就来说说session、cookie、token这三者之间的关系!最近这仨玩意搞得头有点大 我们都知道 HTTP 协议是无状态的,所谓的无状态就是客户端每次想要与服务端通信,都必须重新与服务端链接,意味着请求一次客户端和服务端就连接一次,下一次请求与上一次请求是没有关系的

    2024年02月10日
    浏览(29)
  • HTTP请求中token、cookie、session有什么区别

     cookie HTTP 无状态的,每次请求都要携带 cookie ,以帮助识别身份 服务端也可以向客户端 set-cookie , cookie 大小 4kb 默认有跨域限制:不可跨域共享,不可跨域传递 cookie (可通过设置 withCredential 跨域传递 cookie ) cookie本地存储 HTML5 之前 cookie 常被用于本地存储 HTML5 之后推荐使用

    2024年02月08日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包