前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前后端分离 token和cookie对比

前后端分离 token和cookie对比

原创
作者头像
用户4158112
修改2020-12-10 10:04:28
2K0
修改2020-12-10 10:04:28
举报

前后端分离 token和cookie对比

HTTP协议本身是无状态的,所以需要一个标志来对用户身份进行验证

1、cookie

用户登录成功后,会在服务器存一个session,同时发送给客户端一个cookie,这个cookie里面有唯一标识该用户的sessionID

数据需要客户端和服务器同时存储

用户再进行请求操作时,需要带上cookie,在服务器进行验证

cookie是有状态的

2、token

用户进行任何操作时,都需要带上一个token

token的存在形式有很多种,header/requestbody/url 都可以

这个token只需要存在客户端,服务器在收到数据后,进行解析

token是无状态的

token相对cookie的优势

   1、支持跨域访问 ,将token置于请求头中,而cookie是不支持跨域访问的;

   2、无状态化, 服务端无需存储token ,只需要验证token信息是否正确即可,而session需要在服务端存储,一般是通过cookie中的sessionID在服务端查找对应的session;

   3、 无需绑定到一个特殊的身份验证 方案(传统的用户名密码登陆),只需要生成的token是符合我们预期设定的即可;

   4、 更适用于移动端 (Android,iOS,小程序等等),像这种原生平台不支持cookie,比如说微信小程序,每一次请求都是一次会话,当然我们可以每次去手动为他添加cookie,详情请查看博主另一篇博客;

   5、 避免CSRF跨站伪造攻击 ,还是因为不依赖cookie;

   6、 非常适用于RESTful API ,这样可以轻易与各种后端(java,.net,python…)相结合,去耦合

作者:猫咪咪 链接:https://www.zhihu.com/question/353373715/answer/878707077 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

token

令牌,是用户身份的验证方式。

最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名)。

对Token认证的五点认识

一个Token就是一些信息的集合;

在Token中包含足够多的信息,以便在后续请求中减少查询数据库的几率;

服务端需要对cookie和HTTP Authrorization Header进行Token信息的检查;

基于上一点,你可以用一套token认证代码来面对浏览器类客户端和非浏览器类客户端;

因为token是被签名的,所以我们可以认为一个可以解码认证通过的token是由我们系统发放的,其中带的信息是合法有效的;

session

会话,代表服务器与浏览器的一次会话过程,这个过程是连续的,也可以时断时续。

cookie中存放着一个sessionID,请求时会发送这个ID;

session因为请求(request对象)而产生;

session是一个容器,可以存放会话过程中的任何对象;

session的创建与使用总是在服务端,浏览器从来都没有得到过session对象;

session是一种http存储机制,目的是为武装的http提供持久机制。

cookie

储存在用户本地终端上的数据,服务器生成,发送给浏览器,下次请求统一网站给服务器。

cookie与session区别

cookie数据存放在客户端上,session数据放在服务器上;

cookie不是很安全,且保存数据有限;

session一定时间内保存在服务器上,当访问增多,占用服务器性能。

session与token

作为身份认证,token安全行比session好;

Session 认证只是简单的把User 信息存储到Session 里,因为SID 的不可预测性,暂且认为是安全的。这是一种认证手段。 而Token ,如果指的是OAuth Token 或类似的机制的话,提供的是 认证 和 授权 ,认证是针对用户,授权是针对App 。其目的是让 某App有权利访问 某用户 的信息。

token与cookie

Cookie是不允许垮域访问的,但是token是支持的, 前提是传输的用户认证信息通过HTTP头传输;

token就是令牌,比如你授权(登录)一个程序时,他就是个依据,判断你是否已经授权该软件;cookie就是写在客户端的一个txt文件,里面包括你登录信息之类的,这样你下次在登录某个网站,就会自动调用cookie自动登录用户名;session和cookie差不多,只是session是写在服务器端的文件,也需要在客户端写入cookie文件,但是文件里是你的浏览器编号.Session的状态是存储在服务器端,客户端只有session id;而Token的状态是存储在客户端。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前后端分离 token和cookie对比
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档