话前声明:我对技术的一贯态度,不求刨根问底,也不会浅尝辄止,点到为止。

无状态

先从Http说起,Http是应用层的传输协议,现在谈的session、cookie、token基本都是web应用涉及到的会话保持技术。最早的web应用就是一个资源浏览页面,用户发起Http请求,服务端找到对应的资源并返回响应,这貌似就是超文本传输协议最白话的解释。这就好比你开了家饭店,客人花钱来吃饭,每个客人吃完就滚蛋,谁也不认识谁,这就是无状态。

session

后来web应用越来越复杂(权限控制,安全支付,千人千面),服务端的业务必须识别用户的身份,这里的识别是指每一次的Http请求,最常见的就是电子商务。用户登录后,有服务器颁发一个会话session,每个session有唯一的sessionId,每个session在浏览器关闭之前有自己的有效期。登陆后每次发起Http请求都会带着sessionId(url地址重写,或者表单隐藏域提交),这样服务端就可以识别每个用户了,现在用户和服务端通过session维持了状态。

这就好比你开了家快餐店,因为客人太多,于是你给每个客人发个号码牌,客人通过号码牌来你这取餐,这样你和客人之间就保持了一个根据号码牌识别身份的状态机制。

cookie

只用session来维持会话,关闭浏览器session就失效了,这样还是不能很好地保持这个状态机制,后来有了cookie,可以把一部分数据写到客户端浏览器。上面说的sessionId就可以写到cookie里,浏览器关闭再重启后,访问web应用,浏览器还是可以把指定访问范围内的cookie信息带给服务端,这样服务端拿到sessionId就可以找到session用户信息。

购物网站未登录用户的购物车通常就是利用cookie技术,万变不理其宗,就是利用cookie保存在客户端,浏览器可以把可见范围内的cookie带到服务端。

这就好比你开了家饭店,搞了一套全民会员制,每个客人发一张会员卡,客人来吃饭,可以出示会员卡或者自报手机号,你根据会员卡或手机号去电脑里查询客人相关信息,并给予积分,充值,或扣费。

token

最早接触token的时候是处理客户端重复请求问题,给客户端颁发一个token,利用拦截器检查用户是否重复提交请求。类似的,利用token解决状态保持基本也是一个路子。服务端给用户颁发一个加密后的token,只有服务端可以解密(最简单就是使用非对称加密),用户请求带着token来,可以用cookie带来或者使用客户端本地存储,服务端就地解密决定是否放行通过。

这就好比你开了家无人自助餐厅,客户自行刷卡进入,没有其他工作人员。

结束:不知所言,欢迎拍砖

本站以现代、古代情诗为主,情诗网创办于2013年,以原创爱情诗歌、经典情诗、现代情诗、古代情诗、英文情诗、情诗绝句为主并收集古诗、古诗词、诗歌大全、诗词名句的文学门户。方便您下次继续阅读;可以放在浏览器的收藏夹中(快捷键Ctrl+D);或者看到喜欢或者有趣的诗词可以通过分享按钮给你的好友分享;情诗网是目前最全情诗大全网站之一。并欢迎广大诗歌爱好者阅览投稿!喜欢本站的话请大家把本站告诉给你朋友哦!地址是 www.qingshiwang.com !