token,cookie,session的区别

本文详细阐述了Cookie、Session和Token的区别及其在身份验证中的作用。Cookie存储在客户端,不安全且有大小限制,常用于会话跟踪;Session基于Cookie实现,存储在服务器端,更安全但会占用服务器资源;Token则提供了无状态的身份验证,更适用于分布式系统,且不受同源策略限制。总结了它们的安全性、有效期、存储量和使用场景,并讨论了在HTTP请求头中如何携带这些信息。
摘要由CSDN通过智能技术生成

 token,cookie,session的区别:

cookie

对于事务处理没有记忆能力,每次客户端和服务端会话完成时,服务端不会保存任何会话信息:每个请求都是完全独立的,服务端无法确认当前访问者的身份信息,无法分辨上一次的请求发送者和这一次的发送者是不是同一个人。所以服务器与浏览器为了进行会话跟踪(知道是谁在访问我),就必须主动的去维护一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器。而这个状态需要通过 cookie 或者 session 去实现。

cookie 存储在客户端: cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。

cookie 是不可跨域的: 每个 cookie 都会绑定单一的域名,无法在别的域名下获取使用,一级域名和二级域名之间是允许共享使用的(靠的是 domain)。

Session

session 是另一种记录服务器和客户端会话状态的机制

session 是基于 cookie 实现的,session 存储在服务器端,sessionId 会被存储到客户端的cookie 中.用户第一次请求服务器的时候,服务器根据用户提交的相关信息,创建对应的 Session

请求返回时将此 Session 的唯一标识信息 SessionID 返回给浏览器

浏览器接收到服务器返回的 SessionID 信息后,会将此信息存入到 Cookie 中,同时 Cookie 记录此 SessionID 属于哪个域名

当用户第二次访问服务器的时候,请求会自动判断此域名下是否存在 Cookie 信息,如果存在自动将 Cookie 信息也发送给服务端,服务端会从 Cookie 中获取 SessionID,再根据 SessionID 查找对应的 Session 信息,如果没有找到说明用户没有登录或者登录失效,如果找到 Session 证明用户已经登录可执行后面操作。

根据以上流程可知,SessionID 是连接 Cookie 和 Session 的一道桥梁,大部分系统也是根据此原理来验证用户登录状态。

Cookie 和 Session 的区别

安全性: Session 比 Cookie 安全,Session 是存储在服务器端的,Cookie 是存储在客户端的。

存取值的类型不同:Cookie 只支持存字符串数据,想要设置其他类型的数据,需要将其转换成字符串,Session 可以存任意数据类型。

有效期不同: Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,Session 一般失效时间较短,客户端关闭(默认情况下)或者 Session 超时都会失效。

存储大小不同: 单个 Cookie 保存的数据不能超过 4K,Session 可存储数据远高于 Cookie,但是当访问量过多,会占用过多的服务器资源。

token令牌

客户端使用用户名跟密码请求登录

服务端收到请求,去验证用户名与密码

验证成功后,服务端会签发一个 token 并把这个 token 发送给客户端

客户端收到 token 以后,会把它存储起来,比如放在 cookie 里或者 localStorage 里

客户端每次向服务端请求资源的时候需要带着服务端签发的 token

服务端收到请求,然后去验证客户端请求里面带着的 token ,如果验证成功,就向客户端返回请求的数据

每一次请求都需要携带 token,需要把 token 放到 HTTP 的 Header 里

基于 token 的用户认证是一种服务端无状态的认证方式,服务端不用存放 token 数据。用解析 token 的计算时间换取 session 的存储空间,从而减轻服务器的压力,减少频繁的查询数据库

token 完全由应用管理,所以它可以避开同源策略

Token 和 Session 的区别

Session 是一种记录服务器和客户端会话状态的机制,使服务端有状态化,可以记录会话信息。而 Token 是令牌,访问资源接口(API)时所需要的资源凭证。Token 使服务端无状态化,不会存储会话信息。

Session 和 Token 并不矛盾,作为身份认证 Token 安全性比 Session 好,因为每一个请求都有签名还能防止监听以及重放攻击,而 Session 就必须依赖链路层来保障通讯安全了。如果你需要实现有状态的会话,仍然可以增加 Session 来在服务器端保存一些状态。

Request Header:

Authorization:Bearer  {token}

每个请求是可以单独添加请求头的,作用范围如下图

 

登录,拿到token

外面没有放信息头管理器,因此每个单独的请求必须带编码格式content-type

在请求头中带入token参数(携带token,token只需要携带就可以了,有时候token也会作为入参的形式传递过去)

CookieSessionToken 都是 Web 应用程序中用于用户身份验证的机制。它们的区别如下: 1. Cookie: Cookie 是存储在客户端浏览器的文本文件中的一小段数据。服务器通过在响应头中设置 Set-Cookie 头将其发送到客户端。浏览器在以后的每个请求中都会将 Cookie 作为请求头发送到服务器。服务器可以使用 Cookie 来识别用户身份并提供个性化的响应。Cookie 可以设置过期时间,这意味着浏览器将在过期时间之前保留 Cookie,并在每个请求中发送它。 2. Session: Session 是一种在服务器端存储用户信息的机制。当用户成功登录后,服务器会为用户创建一个会话,并将会话 ID 存储在 Cookie 中。在接下来的每个请求中,浏览器将会话 ID 作为请求头发送到服务器。服务器使用该 ID 来查找该用户的会话,并在会话中存储用户信息。与 Cookie 不同,Session 数据存储在服务器上,因此更安全。Session 也可以设置过期时间。 3. Token: Token 是一种基于令牌的身份验证机制。它是一段加密的字符串,包含有关用户身份的信息。当用户通过身份验证后,服务器会将 Token 发送回客户端。客户端将 Token 存储在本地存储或 Cookie 中,并在以后的每个请求中将其发送到服务器。服务器使用 Token 验证用户身份,并提供相应的响应。与 CookieSession 不同,Token 不需要在服务器上存储用户信息,这使得 Token 身份验证更加可扩展和安全。Token 也可以设置过期时间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

星空以下

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

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

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

打赏作者

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

抵扣说明:

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

余额充值