cookie,session,token详解

本文比较了Cookie、Session和Token在实现Web授权中的作用,强调了它们的原理、优缺点及适用场景,如Cookie的存储限制、Session的安全性提升和Token的跨域及安全性特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cookie,session和token都是我们实现授权的方式,在面试中也经常问道到他们的区别,那么他们的区别到底是什么呢?

简单概念

众所周知,http是无状态的协议,它对于事务处理没有记忆能力,每次客户端和服务端会话完成时,服务端不会保存任何会话信息,所以每个请求都是完全独立的,服务器无法确认当前访问者的身份信息。所以为了进行会话跟踪,就要主动维护一个状态,用于告诉服务器前后两个请求是否来自同一浏览器。而这个状态就需要cookie或者session实现。
同理,token是用户访问API时所需要的资源凭证。token分为Acess Token和Refresh Token。Acess Token一般用来作为登录凭证,而Refresh Token一般用来做Acess Token的刷新

cookie

cookie存储在浏览器,存储大小为4kb,以字符串的形式存储
发送请求时浏览器会检查是否有cookie,如果存在cookie就会自动带上,需要注意的是,cookie是不可跨域的,每个cookie都会绑定单一的域名,无法在别的域名下获取使用。但是在一级域名和二级域名之间是允许共享使用的

session

session是基于cookie实现的,但是session存储在服务器端,而服务端会返回sessionId存储到cookie中。当客户端发起请求时,请求会自动判断携带cookie,服务端就会从cookie中获取sessionID然后查找对应信息。

cookie和session的区别

  • session由于存储在服务器的,所以session相比于cookie更安全
  • cookie只支持字符串类型的数据,但是session可以存储任意类型的数据
  • cookie可长时间保存,但是session在默认情况下客户端关闭或者session超时都会失效
  • cookie的存储大小为4kb,session的存储大小远高于cookie

Token

token一般由服务端通过用户信息等生成,会在用户登录成功后返回给客户端,客户端接收到token后会存储在cookie 或者localStorage 中,之后煤气发起请求,都需要将token放在请求头中携带。
token支持移动端设备,支持跨程序调用,更安全。

Token和session的区别

  • session是记录了会话状态,使服务端有状态化,而token是令牌,访问资源接口时的凭证,它不会让服务器有状态,也不会保存会话信息
  • 作为身份认证来说,Token相比session来说安全性更好,因为每一个请求都有签名,并且还能防止监听以及重放攻击
  • 如果用户数据可能可第三方共享或者允许第三方调用接口,就需要用token,因为使用sessionid就认为有此用户的全部权力,不应该共享出去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值