1.什么是Token?原文
- token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。
- 当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。
- 简单token的组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token的前几位以哈希算法压缩成的一定长度的十六进制字符串。为防止token泄露)。
2.为什么要用Token?
- Token 完全由应用管理,所以它可以避开同源策略
- Token 可以避免 CSRF攻击(跨站请求伪造)
1.验证 HTTP Referer 字段(记录了 HTTP 请求的来源地址,存在被黑客篡改的可能)
2.在请求地址中添加 token 并验证(所有请求中加入token的字段,麻烦)
3.在 HTTP 头中自定义属性并验证(在请求头中加入token)
axios.defaults.headers.common[‘Token’] = tokenMessage; - Token 可以是无状态的,可以在多个服务间共享