Cookie、Session、Token 解析

转载自:https://www.zuojl.com/cookie-session-token/

叙述

在 Web 的发展中,我们知道浏览器和服务器之间采用 HTTP 协议进行通信,但是这个协议是无状态的,为了知道用户的状态,发展了很多的技术,其中常用又比较容易混淆的有三个 Cookie、Session 和 Token。这里对其进行下总结,如有理解偏差的地方,请指正。

Cookie 是浏览器中以 Key-Value 键值对的形式保存来保存的用户状态信息。数据通过请求头进行客户端和服务器间的传输。 Cookie 有以下的一些属性来控制其行为

  • Expires 过期时间
  • Max-age 存后时间
  • Domain 生成 Cookie 的域
  • Path 访问路径
  • Secure 加密设置,防止攻击

Session

Session是另一种记录客户状态的机制,它是在服务端保存的一个数据结构。
用户第一次登录后,浏览器会将用户信息发送给服务器,服务器会为该用户创建一个SessionId,并在响应内容(Cookie)中将该SessionId一并返回给浏览器,浏览器将这些数据保存在本地。当用户再次发送请求时,浏览器会自动的把上次请求存储的Cookie数据自动的携带给服务器。
服务器接收到请求信息后,会通过浏览器请求的数据中的SessionId判断当前是哪个用户,然后根据SessionId在Session库中获取用户的Session数据返回给浏览器。

这里的 SessionId 保存在 Cookie 中,除了依赖 Cookie 外,也可以使用 URL重写,隐藏表单域等方式进行传递 SessionId。

Token

相较于前两个, token 一般用于短期的验证和跨域验证。Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌。当客户端第一次访问服务端,服务端会根据传过来的唯一标识userId,运用一些算法,并加上密钥,生成一个Token,然后通过BASE64编码一下之后将这个Token返回给客户端,客户端将Token保存起来(可以通过数据库或文件形式保存本地)。下次请求时,客户端只需要带上Token,服务器收到请求后,会用相同的算法和密钥去验证Token。和 Cookie 进行比较就能很好的提现其跨域的能力

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值