浅谈对cookie、session和token的理解

一、Cookie

1.什么是cookie

原理图

说明:

1.浏览器第一次发送请求到服务端
2.服务器响应结果的同时也返回了一些数据也就是cookie给浏览器。
3.浏览器读取cookie并存储,当再次发起访问请求的时候携带上cookie。
4.服务器检查了cookie可以识别身份,响应结果。

2.为什么需要cookie

因为Web传输是通过HTTP协议,而HTTP协议是无状态协议。

无状态协议就是客户端是不保存数据的。如果后续的操作需要用到之前的数据,就需要重新传输数据,这样就很麻烦。

而cookie的出现就可以保存这些数据。

3.cookie的保存方式

1.浏览器将cookie存储在内存中。

2.保存在客户端的硬盘。

4.cookie的优缺点

优点

  • cookie可以实现跨页面全局变量,同一个网站中所有的页面可以共享一套cookie。
  • 通过加密和安全传输技术(SSL),减少cookie被破解的可能性
  • 数据持久性。
  • 简单性。cookie是一种基于文本的轻量结构,包含简单的键值对,结构简单。

缺点

  • cookie可能被禁用。
  • cookie与浏览器相关,不能互相访问。
  • cookie可能被用户删除。
  • cookie安全性不够高,有可能会被篡改。
  • cookie存储空间很小。

二、Session

1.什么是session

Session是另一种记录客户状态的机制,不同的是Cookie保存在浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以Session的方式记录在服务器上。当客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。Session是一种特殊的cookie。Cookie是保存在客户端的,而Session是保存在服务端的。

原理图

说明:

1.客户端第一次请求服务器时,服务器生成一份session保存在服务器。
2.服务器将该session的id以cookie的形式传递给客户端。
3.浏览器读取cookie并存储,当再次发起访问请求的时候携带上cookie。
4.服务器检查了cookie可以识别身份,响应结果。

2.为什么要用session

因为cookie存在于客户端,用户可以看到并且可以随意修改,安全性较低。并且cookie的存储大小也有限。
而session存储在服务端,信息安全性较高。

3.session的优缺点

优点

  • 信息存储在服务端非常安全,客户端拿不到session的数据
  • 易于读写、易于站点的用户化。

缺点

  • 会占用服务器的资源,session的文件越来越多,有一天就会占满磁盘。
  • 依托性。如果某用户将浏览器设置为不兼容任何的cookie,那么该用户就无法使用这个session变量。

三、cookie和session的共同点以及区别

共同点

  • 两者都是用来记录用户的状态。(保存用户的登录态)

区别

  • cookie是存储在客户端的,而session是存储在服务器端的。
  • cookie有大小限制
  • session更加安全
  • session会比较占用服务器性能,当访问增多时应用cookie。
  • cookie只支持字符串数据,而session可以存放任意数据类型。

四、token

1.什么是token

token存在于客户端,但它是服务器端发回来的,每次请求都需要携带token,把token放到HTTP的Header中,基于token的用户认证是一种服务端无状态的认证方式,服务端不用存放token的数据,用解析token的时间换取session的存储空间、可以减轻服务器的压力,减少频繁查询数据库,token完全由应用管理,避开同源策略。

原理图

说明:

1.登录提交用户名和密码
2.服务器端验证并返回响应结果,通过则生成该用户的token并且返回。
3.将token存放在客户端,后续所有请求都带上它。

2.token和session的区别

  • session是一种记录服务器和客户端会话状态的机制,使服务端由状态化。而token是令牌,访问资源接口(API)时所需要的认证资源,token使服务器无状态化,不会存储会话信息。
  • session和token并不矛盾,作为身份认证token比session安全性更好,因为每一个请求都有签名,还能防止监听以及重击攻击,而session就必须依赖链路层来确保通讯安全了。
posted @   Zzxzzx999  阅读(224)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示