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

简介: 本文详细描述了Cookie,Session,Token的定义、鉴权原理和区别。cookie是由Web服务器保存在用户浏览器上的一小段文本,格式:key=value,包含用户相关的信息。session是依赖Cookie实现的,session是服务器端对象,是浏览器和服务器会话过程中,服务器分配的一块储存空间。服务器默认为浏览器在cookie中设置 sessionid,浏览器在向服务器请求过程中传输 cookie 包含 sessionid ,服务器根据 sessionid 获取出会话中存储的信息,确定身份信息。

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信

息,从而实现鉴权。

image.gif编辑

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的数据

image.gif编辑

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用户对应的数据

image.gif编辑

总之,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来标示自己就够了

    目录
    相关文章
    |
    11天前
    |
    存储 安全 搜索推荐
    理解Session和Cookie:Java Web开发中的用户状态管理
    理解Session和Cookie:Java Web开发中的用户状态管理
    35 4
    |
    14天前
    |
    存储 缓存 网络协议
    计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
    计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
    |
    1月前
    |
    缓存 Java Spring
    servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header
    文章比较了在Servlet和Spring Boot中获取Cookie、Session和Header的方法,并提供了相应的代码实例,展示了两种方式在实际应用中的异同。
    149 3
    servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header
    |
    26天前
    |
    存储 安全 数据安全/隐私保护
    Cookie 和 Session 的区别及使用 Session 进行身份验证的方法
    【10月更文挑战第12天】总之,Cookie 和 Session 各有特点,在不同的场景中发挥着不同的作用。使用 Session 进行身份验证是常见的做法,通过合理的设计和管理,可以确保用户身份的安全和可靠验证。
    19 1
    |
    1月前
    |
    存储 JavaScript 前端开发
    vuex和localstorage . cookie的区别
    【10月更文挑战第8天】
    52 1
    |
    1月前
    |
    存储 缓存 JavaScript
    cookie和localStorage的区别特点
    cookie和localStorage的区别特点
    107 0
    |
    2月前
    |
    存储 缓存 数据处理
    php学习笔记-php会话控制,cookie,session的使用,cookie自动登录和session 图书上传信息添加和修改例子-day07
    本文介绍了PHP会话控制及Web常用的预定义变量,包括`$_REQUEST`、`$_SERVER`、`$_COOKIE`和`$_SESSION`的用法和示例。涵盖了cookie的创建、使用、删除以及session的工作原理和使用,并通过图书上传的例子演示了session在实际应用中的使用。
    php学习笔记-php会话控制,cookie,session的使用,cookie自动登录和session 图书上传信息添加和修改例子-day07
    |
    2月前
    |
    存储 前端开发 Java
    JavaWeb基础7——会话技术Cookie&Session
    会话技术、Cookie的发送和获取、存活时间、Session钝化与活化、销毁、用户登录注册“记住我”和“验证码”案例
    JavaWeb基础7——会话技术Cookie&Session
    |
    2月前
    |
    存储 安全 NoSQL
    Cookie、Session、Token 解析
    Cookie、Session、Token 解析
    59 0
    |
    2月前
    |
    存储 JSON 数据安全/隐私保护
    Cookie + Session 的时代已经过去了?
    在探讨“Cookie + Session”这一经典组合是否已经过时的议题时,我们首先需要理解它们在Web应用认证和会话管理中的历史地位与当前面临的挑战。随着Web技术的飞速发展,特别是无状态服务、OAuth、JWT(JSON Web Tokens)等技术的兴起,这一传统机制确实面临了前所未有的变革压力。但说它“完全过去”或许过于绝对,因为它在特定场景下仍发挥着重要作用。
    36 0