一文助你快速理解Cookie,Session,Token的区别

目录

一、Cookie简介

1.1.cookie定义

1.2.cookie鉴权原理

1.3.cookie的分类

二、Session简介

2.1.session的定义

2.2.session会话机制

2.3.Session 的缺点

三、cookie与session区别

3.1.存储位置

3.2.安全性

3.3.占用服务器资源

3.4.存储空间

3.5.存储类型

3.6.总结建议

四、Token简介

4.1.token的引入

4.2.token的定义

4.3.使用Token的目的

4.4.token鉴权原理

五、session与token区别


HTTP协议本身是无状态的。什么是无状态?即服务器无法判断用户身份, 也就是说无法知道上一次请求的对象是谁, 此时就要使用到会话跟踪技术

Cookie是解决HTTP无状态性的有效手段,服务器可以设置或读取Cookie中所包含的信息,什么是cookie呢?

一、Cookie简介

1.1.cookie定义

cookie是由Web服务器保存在用户浏览器上的一小段文本,格式:key=value,包含用户相关的信息。

1.2.cookie鉴权原理

1.2.1.当客户端第一次访问服务器的时候,那么服务器就会生成Cookie信息,并且在响应头的
set-cookie里面把生成的cookie信息发送给客户端。
1.2.2.当客户端第2-N次访问服务器的时候,那么客户端就会在请求头的cookie带上cookie信
息,从而实现鉴权。

1.3.cookie的分类

1.3.1.会话cookie:保存在内存,当浏览器关闭之后就会自动化清除cookie

1.3.2.持久cookie:保存在 硬盘 ,浏览器关闭后不会清除,只有当失效时间到了才会自动清除。

二、Session简介

2.1.session的定义

session是依赖Cookie实现的,session是服务器端对象,是浏览器和服务器会话过程中,服务器分配的一块储存空间。

服务器默认为浏览器在cookie中设置 sessionid,浏览器在向服务器请求过程中传输 cookie 包含 sessionid ,服务器根据 sessionid 获取出会话中存储的信息,然后确定会话的身份信息。

2.2.session会话机制

客户端A访问服务器,服务器存储A的数据value;

把key返回给客户端A,客户端A下次带着key(session ID)来访问服务器;

服务器就能给出客户端A的数据。

如果做了负载均衡,客户端A访问了另一个服务器,则另一个服务器没有客户端A的数据

 

2.3.Session的缺点

Session 机制的缺点,比如: A 服务器存储了 Session,如果做了负载均衡后,

假如一段时间内 A 的访问量激增,会转发到 B 进行访问,

但是 B 服务器并没有存储 A 的 Session,会导致 Session 的失效。 

三、cookie与session区别

3.1.存储位置

cookie数据存:放在客户端浏览器上或本地

session数据:只能放在服务器上

3.2.安全性

cookie:安全性较差,别人可以分析存放在本地的Cookie并进行Cookie欺骗,以攻击网站        

session:安全性相对更高

3.3.占用服务器资源

cookie:服务器性能消耗小

session:一定时间内保存在服务器上,当访问增多,会比较占用服务器性能,考虑到减轻服务器性能压力,应当使用cookie

3.4.存储空间

单个cookie:保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie

session:没有大小限制和服务器的内存大小有关

3.5.存储类型

cookie:只能存储 String 类型的对象

session:能够存储任意的 java 对象

3.6.总结建议

登陆等重要信息存放为Session;其他信息如果需要保留,可以放在Cookie中

四、Token简介

4.1.token的引入

Token是在客户端频繁服务端请求数据,服务端频繁去数据库查询用户名和密码并进行对比,

判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。

4.2.token的定义

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌;

当第一次登录后,服务器生成一个Token便将此Token返回给客户端;

以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

4.3.使用Token的目的

Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。

4.4.token鉴权原理

Token令牌:客户端A访问服务器,服务器给了客户端token,客户端A拿着token访问服务器,服务器验证token,返回该token用户对应的数据

 总之,Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位

五、session与token区别

  1. token存储在客户端session存储在服务器端
  2. token提供认证和授权功能,作为身份认证,token安全性比session好,因为每个请求都有签名还能防止监听以及重放攻击session就必须靠链路层来保障通讯安全,如果你需要实现有状态的会话,仍然可以增加session来在服务器端保存一些状态
  3. token不一定存储;session存在服务器中,增加服务器压力;
  4. token可以跨域;session不可以跨域,它是与域名绑定的,扩展性不强;
  5. token适用于项目级的前后端分离(前后端代码运行在不同的服务器下);session这种会话存储方式方式只适用于客户端代码和服务端代码运行在同一台服务器上
  6. token是时间换空间;session是空间换时间
  7. token是开发定义的;session是http协议规定的;
  8. tokensession都是为了身份验证,token被翻译为令牌;session被翻译为会话
  9. tokensession都需要去管理过期时间

App通常用restful api跟server打交道。Rest是stateless的,也就是app不需要像Browser那样用cookie来保存session,因此用session、token来标示自己就够了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沫沫18S

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值