大话Token、Cookie和Session

本文介绍了HTTP协议无状态特性及其应对策略,详细讲解了Cookie、Session和Token的工作原理和优缺点。Cookie是保存在客户端的数据,Session存储在服务器端,而Token则作为身份标识进行验证。文章探讨了它们的安全性、存储限制以及在实际应用中的考量,如Token的时效性和刷新策略。

众所周知,http协议是无状态的协议,服务器不能清楚判定发送方的身份,但在类似网络购物等交互式应用场景中,服务器又需要能够真实的区分发送请求的用户身份,否则把张三购买的物品发送给了李四,对于张三来说,肯定是零容忍。
那这一切又是如何做到的呢?这就不得不提一下cookie、session和token了。

Cookie的定义

cookie是指小段的文本信息(key-value格式),是浏览器实现的一种数据存储功能。cookie由服务器生成,发送给浏览器,浏览器把cookie以键值对形式保存到客户端某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。通过对cookie中信息的解析,服务器可以识别请求发送者的身份。由于cookie是存在客户端上的,所以浏览器加入了一些限制,确保cookie不会被恶意使用,同时为了不占据太多磁盘空间,每个域的cookie数量是有限的。

打个比方,每个中国公民成年后会去派出所办个身份证,上面会有你的姓名、性别、民族、住址和身份证号码等信息(同样是以KV形式展示),当你办理任何对公事务时,诸如高考等,都需要出示身份证来表明你的身份。

PS:cookie是不可以跨域名的,隐私安全机制禁止网站非法获取其他网站的cookie。一般来说,同一个一级域名下的两个二级域名也不能交互使用cookie。比如a.test.com和b.test.com,因为二者的域名不完全相同。如果想要test.com名下的二级域名都可以使用该cookie,需要设置cookie的domain参数为.test.com,这样a.test.com和b.test.com就能访问同一个cookie。

既然可以通过cookie的方式表明发送者的身份,为什么一般不采用这种方案呢?

主要是cookie有以下缺点:

1、 cookie的数量和长度都有限制
2、潜在的安全风险:cookie可能被截取篡改,如果cookie被拦截,就可能会获取到所有的信息
3、用户可能会配置禁用浏览器或者客户端设备接受cookie的能力,因此可能会限制了这一功能
4、有些状态不可能保存在客户端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值