前端面试题:session、cookie和token的区别你知道吗

session:

浏览器第一次访问服务器,服务器会创建一个session,并在在cookie中保存该sessionId——》session,(浏览器禁用了cookie或不支持cookie,这种可以通过URL重写的方式发到服务器)

sessionid ,一般都是一段随机字符串,需要到后端去检索 id 的有效性

类似: 我发给你一张身份证,但只是一张写着身份证号码的纸片。你每次来办事,我去后台查一下你的 id 是不是有效。


token:

浏览器第一次访问服务器,根据传过来的唯一标识userId,服务端会通过一些算法,如常用的HMAC-SHA256算法,然后加一个密钥,生成一个token,然后通过BASE64编码一下之后将这个token发送给客户端;客户端将token保存起来,下次请求时,带着token,服务器收到请求后,然后会用相同的算法和密钥去验证token,如果通过,执行业务操作,不通过,返回不通过信息;

token在服务器是可以不需要存储用户的信息的,后端不需要记录什么东西,每次一个无状态请求,每次解密验证,每次当场得出合法 /非法的结论

类似: 我发给你一张加密的身份证,以后你只要出示这张卡片,我就知道你一定是自己人。


cookie设置domain为顶级域名时可以被其他二级域名共享,例如:如www.abc.com设置domain为abc.com,news.abc.com能够共享cookie;

1、顶级域名的cookie在顶级域名或者2级域名都可以删除,但是用非顶级域名访问的网站要删除顶级域名的cookie,需要设置获取到的cookie的domain为顶级域名,这样才能删除顶级域名的cookie,否则无法删除,默认的会删除访问的域名下对应的cookie,而不是顶级域名的。

2、删除2级域名自身生成的cookie不需要设置domain,可以直接删除。


分享到:


相關文章: