cookie和token的区别

目录

一、cookie

二、token

三、cookie和token具体的区别


        cookie和token的共同点都是用来判断用户是否“已登录”,至于判断具体是哪个用户,服务器的做法不一样:

一、cookie

        HTTP 是无状态的协议,每个请求都是完全独立的,服务端无法确认当前访问者的身份信息,无法分辨上一次的请求发送者和这一次的发送者是不是同一个人。所以服务器与浏览器为了进行会话跟踪(知道是谁在访问我),就必须主动的去维护一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器。Cookie是服务器发送到用户浏览器并保持在本地的一小块信息,他会在浏览器下次向服务器发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器。

        cookie是由Web服务器保存在用户浏览器上的小文件(key-value格式),包含用户相关的信息。客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器发送一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户身份。

  • 用户第一次请求服务器的时候,服务器根据用户提交的相关信息,创建对应的 Session ,response时将此 Session 的唯一标识信息 SessionID 返回给浏览器,浏览器接收到服务器返回的 SessionID 信息后,会将此信息存入到 Cookie 中,同时 Cookie 记录此 SessionID 属于哪个域名。
  • 当用户第二次访问服务器的时候,请求会自动判断此域名下是否存在 Cookie 信息,如果存在自动将 Cookie 信息也发送给服务端,服务端会从 Cookie 中获取 SessionID,再根据 SessionID 查找对应的 Session 信息,如果没有找到说明用户没有登录或者登录失效,
  • 只有找到 Session 才可以证明用户已经登录, 就可执行后面操作。

二、token

使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:

  • 客户端使用用户名、密码请求登录
  • 服务端收到请求,去验证用户名、密码
  • 验证成功后,服务端会签发一个 Token令牌-就是字符串-作为个人身份标识,再把这个 Token 发送给客户端
  • 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 、Session Storage里
  • 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token(cookie或者请求头里都可以)
  • 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据
  • 客户端向服务器端发送消息的时候,服务器端可能有多个服务器,-----我们的token信息存储在readis或者其他容器内
  • 那么无论客户端请求那个服务器,服务器只需要携带token去容器中寻找就可以了。

三、cookie和token具体的区别

  1. Cookie 是前后端共享的,前端也能操作Cookie,后端也能操作Cookie
  2. token相当于是一个前端的缓存,后端不能直接读取到他,需要前端先从缓存里读出来,通过http接口参数,传递给后端,后端才能拿到。后端也不能直接修改它,token只能由前端页面做修改。
  3. 在客户端存储的Tokens是无状态的,并且能够被扩展。基于这种无状态和不存储Session信息,负载均衡器能够将用户信息从一个服务传到其他服务器上。
  4. 请求中发送token而不再是发送cookie能够防止CSRF(跨站请求伪造)可以使用请求头。即使在客户端使用cookie存储token,cookie也仅仅是一个存储机制而不是用于认证。不将信息存储在Session中,让我们少了对session操作。
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值