Cookie
⼯作机制:
- 服务器需要客户端保存的内容,放在 Set-Cookie headers 里返回,客户端会自动保存。
- 客户端保存的 Cookies,会在之后的所有请求里都携带进 Cookie header ⾥发回给服务
器。 - 客户端保存的 Cookie 是按照服务器域名来分类的。
- 客户端保存的 Cookie 在超时后会被删除、没有设置超时间的 Cookie (称作 Session Cookie)在浏览器关闭后就会⾃动删除;另外,服务器也可以主动删除还未过期的客户端 Cookies。
使用场景:
- 会话管理:登录状态、购物⻋
- 个性化:⽤用户偏好、主题
- Tracking:分析用户行为
Authorization
两种主流⽅式: Basic 和 Bearer
- Basic:
格式:Authorization: Basic username:password(Base64ed)
- Bearer:
格式:Authorization: Bearer
bearer token 的获取⽅方式:通过 OAuth2 的授权流程
OAuth2流程
以下摘取自阮一峰博客:
A: 用户打开客户端以后,客户端要求用户给予授权。
B: 用户同意给予客户端授权。
C: 客户端使用上一步获得的授权,向认证服务器申请令牌。
D: 认证服务器对客户端进行认证以后,确认无误,同意发放令牌。
E: 客户端使用令牌,向资源服务器申请获取资源。
F: 资源服务器确认令牌无误,同意向客户端开放资源。
API接口的token
有的 App 会在 Api 的设计中,将登录和授权设计成类似 OAuth2 的过程,但简化掉 Authorization code 概念。即:登录接口请求成功时,会返回 access token,然后客户端在之 后的请求中,就可以使用这个 access token 来当做 bearer token 进⾏用户操作了了。
刷新Token
access token 有失效时间,在它失效后,调⽤用 refresh token 接口,传⼊入 refresh_token 来获取新的 access token。
⽬的:安全。当 access token 失窃,由于它有失效时间,因此坏⼈只有较短的时间来「做坏 事」;同时,由于(在标准的 OAuth2 流程中)refresh token 永远只存在与第三方服务的服务器中,因此 refresh token ⼏乎没有失窃的⻛险。