web存储以及cookie、session的区别

  题外话:虽然没有各种大神的博客阅读量多,但是自己也是希望自己能够将这些博客能够坚持下去,分享自己学到的一点一滴的小的知识点。为自己加油!

  在web中,我们经常听到的就是cookie和session的使用和区别。最近在测试过程中,也看到了关于web storage。因为网络的带宽是有限的,所以利用客户端进行存储数据也越来越多,越来越普遍。同样,客户端的存储方式也是多种多样。最简单和易用的方式就是cookie。但是由于cookie本身存储数据大小有限制并且安全性等等问题,所以HTML5就引入了web storage的概念。

    下面我们来一一介绍这几种的区别。

一、cookie和session

  1. cookie的数据存放在用户自身的浏览器中,而session的数据存储在服务器中
  2. cookie的安全性不是很高,(XSRF攻击中就可以利用cookie信息进行伪造成用户,发送伪造请求,造成攻击),别人可以分析存放在本地cookie,进行cookie欺骗;session的安全性相对于cookie比较高一点。
  3. session会在一定时间内保存到服务器上,当访问增多时,session就会降低服务器的性能,考虑到减轻服务器性能方面,可以考虑用cookie保存一些暂时性的数据
  4. session保存的是对象;cookie中保存的是字符串
  5. cookie中的内容包括名字、值、过期时间、路径和域。而路径和域一起构成了cookie的作用范围。如果cookie设置了相应的路径参数,那么同一个网站的不同路径下的cookie相互之间是访问不到的;而session是保存到服务器,所以所有的session在任何一个地方都可以访问的到。
  6. cookie的路径和域标明了cookie作用域,cookie的时间,则是表明cookie的生命期。如果不设定cookie的生命期,那么默认的就是浏览器会话期间,关闭浏览器,cookie也会随之消失。这种生命周期的cookie一般称之为会话cookie。会话cookie一般是保存到内存中的。如果cookie设置了过期时间,那么即使关闭了浏览器,cookie也仍有效。这种cookie一般保存到硬盘上。
  7.  当程序需要给客户端的某个请求创建一个session时,服务器会首先检查这个客户端的请求中是否有session标识,也成为session id。如果客户端请求中已经有了session id,服务器就会按照这个session id把对应的session检索出来。如果客户端的请求中没有session id,那么服务器就会为这个客户端新建一个session id,并且生成一个与此session相关联的session id。一般来说,session id是一个不容易重复也不容易被仿造的字符串。这个新建的session id在本次响应中,返回给客户端进行保存。session id 保存在客户端的方式可以是cookie,在下次请求中,用户的浏览器可以自动的把这个session标识发给服务器,用于查找对应的session。
  8. 虽然session保存在服务器端,但是session数据也是属于临时会话数据。所以,session数据也会有过期时间,仅会在一段时间内有效,而这个时间就是服务器端设置的session的有效期。服务器端不仅保存session这种临时会话数据,也会保存用户的持久数据。

二、web storage 和cookie

  

  从这个图片中可以看到,web storage有两种,一个是local storage,一个是session storage。

  web storage的概念和cookie相似,他们都是保存到用户浏览器中,并且是同源的。在H5引入web storage的时候就是为了更大容量的存储,所以web storage拥有比cookie更大的容量。但是两者之间又是有区别的。

  1. cookie的作用是与服务器进行交互,也就是cookie在浏览器和服务器间来回进行传递。而 web storage主要是为了本地数据的“存储”,web storage不会主动地将数据发送给服务器,仅仅会在本地保存。
  2. web storage 有setItem,getItem,removeItem,clear等方法。而cookie需要前端开发者自己封装setCookie,getCookie
  3. cookie存储的大小限制也不同。cookie的大小限制是4K。因为每次请求都会携带cookie去请求服务器资源,所以cookie也只适合保存很小的数据,比如上面介绍的session id。web storage虽然也会有存储大小的限制,但是相比于cookie来说,会相对大很多,可以达到5M甚至更大。
  4. 数据有效期不同:
    • cookie:设置过期时间内有效
    • session storage:仅仅在当前浏览器窗口关闭前有效,关闭浏览器,session storage也就消失了
    • local storage:始终有效,窗口关闭或者浏览器关闭也一直保存,因此作为持久数据

   5. 作用域不同:

    • cookie:所有同源窗口都是共享的
    • session storage:不同浏览器中不能共享,即使是同一个页面。(也就是同一标签页才能共享。)
    • local storage:在所有同源窗口(文档源级别)中都是共享的。(只要是URL中的协议、端口、主机名有一个不同,那就是不同源)

转载于:https://www.cnblogs.com/starstarstar/p/8392044.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CookieSession Token 在 Web 应用中都被用来跟踪用户状态。两者的主要区别在于,Cookie存储在用户设备上的,而 Session Token 则是存储在服务器端的。 Cookie 是由浏览器自动创建和发送给服务器的,用户可以在浏览器的设置中查看和管理它们。Cookie 中可以存储一些键值对数据,在用户的不同请求之间共享数据。Cookie 适用于存储一些简单的数据,例如用户名和密码等。 Session Token 是在用户登录时在服务器端创建,并在用户与服务器进行交互时发送。服务器端会为每个用户维护一个唯一的 Session Token。Session Token 是在服务器端存储的,用户可以在浏览器中查看,但不能编辑或删除。Session Token 适用于存储用户身份,例如权限、购物车等。 总结,Cookie主要用来存储简单的,不太敏感的数据,且存在浏览器端;而Session token用来标识用户身份,数据都是存在服务器端。 ### 回答2: cookiesession和token都是现在常见的认证方式,用于保证Web应用程序的安全性和隐私性。在理解三者的区别之前,需要先了解它们的基本概念含义。 1. Cookie Cookie 是服务器发送给浏览器的小型数据文件,存储在用户的计算机中。浏览器在之后的请求中会将此文件发送到服务器,以便于验证用户的身份和记录用户的行为。 Cookie 的优点在于它可以存储Session 更多的信息,并且可以在浏览器关闭后仍然保持数据有效。缺点是 Cookie 可以被恶意软件或黑客轻易窃取。 2. Session Session 指的是服务器创建的一个会话过程,用于在特定时间段内记录某个用户的交互状态。通过 SessionWeb应用程序可以在不同的页面之间共享数据,为用户提供个性化服务。 Session 的优点在于它存储在服务器上,保障了比 Cookie 更好的安全性和隐私性。但是, Session 也会消耗服务器的资源,因此需要谨慎管理。 3. Token Token 是一种随机生成的字符串,用于验证用户的身份和权限。在 Web 应用程序中,Token 可以被用来替代 CookieSession,因为它不会存储在用户的计算机中,也不需要服务器存储用户的状态。 Token 的优点在于它们相对更安全,因为它们没有任何销售性的信息存储在用户的浏览器中。另外, Token 机制可以支持无状态应用,也就是应用程序无需保存任何会话信息,更好的支持了分布式架构。 在以上区别基础上,三者的区别主要在于存储地点(客户端或服务器端)、存储内容(数据信息)、安全性和使用场景等。 - Cookie主要存储在客户端,并可以将更多的数据存储在客户端,Session存储于服务端提供了更好的安全性,但会占用更多服务器资源,Token能够将Session信息存储于客户端,也可以保证数据安全。 - Cookie主要用于客户端与服务端的交互;Session更注重用户身份的鉴别与用户状态的维护;Token更多地用于 API 认证。 - 一般情况下Cookie的安全性最低,Session的安全性中等,Token相对而言较为安全。 - 通常情况下,Token方式的应用程序可以跨平台、跨域和分布式部署,更加灵活多变。 综上所述,Cookiesession和token都是Web开发中常用的验证方式,它们在存储及应用方式上均有所差别。仔细分析自身需求,选择最适合的认证方式相比盲目跟随更为优合理。 ### 回答3: CookieSession和Token都是web应用中常见的身份认证和信息存储方式,它们之间最大的不同在于其存储的位置和方式。 Cookie是由服务器在浏览器中生成的,并存储在浏览器中的文件中。当浏览器向服务器发出请求时,会自动通过Cookie中的信息向服务器证明身份。Cookie在用户登录后会保存用户名、密码和一些其他信息,以便下次登录时自动填充,从而提高用户体验。 Session是一个服务器端的解决方案,它可以在服务器端存储用户的会话信息,并且在用户进行请求时将信息传输到客户端。Session的实现依赖于Cookie,服务器通过发送一个包含Session ID的Cookie,来记录用户的会话信息,服务器则将Session信息保存在服务器端的内存或者文件系统中,以确保用户信息的安全性。 Token是一种无状态的身份认证方式,它不同于CookieSession的保存信息方式,而是保存在客户端中。当用户登录时,服务器会生成一个Token并将其返回给客户端,客户端在后续的请求中会带上这个Token,服务器会通过验证Token的合法性来判断用户的身份。 总的来说,Cookie是一种简单且易用的Web身份认证方式,Session需要服务器支持,可以更好的保证用户信息的安全性,Token则更适合Web接口/移动端API身份认证。不同的应用场景可以选择适合的认证方式,以确保用户信息和身份的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值