mqyqingfeng/frontend-interview-question-and-answer

[未知] cookie token 和 session 的区别

mqyqingfeng opened this issue · 1 comments

[未知] cookie token 和 session 的区别
ATQQ commented

三者通常都用于用户的身份校验。

session

服务端生成,存储于服务端的内存中,长时间不使用会过期,服务端会通过session判断请求是否来自同一个客户端

cookie

一般也由服务端生成,存储在客户端,每次请求都会自动附上这个值

  • 请求同域下的静态资源也会附上,会损耗资源

token

服务端生成,服务端可以不做存储,也可以做存储

不做存储

在 token中加入用户身份识别信息,过期时间,时间戳等等内容,然后进行过加密传输给客户端,
需要身份校验的接口,服务端就判断请求头是是否附带有token,如果有取出来解密然后执行后续操作

做存储

生成一段不重复的加密字符串token作为key,然后存放在服务端(通常是用redis,服务端重启也不会丢失用户的登录状态)使用key-value形式,value是用户信息,然后将token(key)发给客户端