1.无状态协议
是指协议对于交互的场景,没有记忆能力
2.引入cookie、session、token的目的
使得交互场景中,协议具有记忆能力。
3.cookie
1.cookie是早期的用户状态机制
2.交互流程:
如上图,每次请求的时候都需要带上一定数量的id,根据物品的id,在数据库中进行相应的查找,才能显示出用户选择的商品。从而达到记忆的功能。
4.session
1.基于cookie,我们发现服务端本来就存放着用户的数据,那么,我们不需要每次都把用户选择物品的id都存储到cookie中,而是加上一个标识用户身份的id,根据用户的id,去服务端查询出用户相对应的数据。这个id就是sessionID
2.交互流程
可以看到,cookie中不再存储大量的数据,只存储相应的sessionID即可。
5.token
token即no session。
session机制中大量的数据存在服务器中,导致服务器压力增加,且在多服务器的情况下,只有接收的服务器才具有当前用户的sessionID,而其他服务器
是没有的,会带来很大的问题。
token签名验证的方式来识别用户的身份,不会将大量的数据存储在服务端。减轻了服务器的压力。
交互流程:
token的组成:
1.头部
一般用于描述基信息:
1.令牌类型
2.签名算法 [HMAC SHA256等]
2.载荷
存放有效信息的部分,尽量不要存放敏感数据。因为这部分数据通过解码后可以查看的到。
3.签名
其实token就是一个串,先将头部和载荷进行编码,然后拼接,使用密钥进行签名。
本篇文章对于token的理解不是特别的透彻,有机会回来更新和修正。大家参考就行,如果错误,请指出。