什么是Http无状态?Session、Cookie、Token三者之间的区别
什么是Http无状态?Session、Cookie、Token三者之间的区别
一、什么是HTTP无状态?
1.1定义:
HTTP无状态协议,是指协议对于交互性场景没有记忆能力。
1.2举个例子:
在无交互场景中上面那样,当然也不会有太大的问题。但是对于涉及到动态交互的场景,就显得很尴尬了,何为交互?有来又有往,对于一模一样的两个接口,不同的人在请求第二个接口时可能会基于请求第一个接口的结果而有所不同。
1.3具体场景:
现在我们来想一个复杂的场景,如在购物网站上买一个书包,流程如下:
输入账号密码登陆 /login 用户信息选择一款你喜欢的书包加入到购物车中 /cart 用户信息,产品信息购买支付 /pay 用户信息,商品信息,金额信息
所谓的登录只是验证你是否是一个合法用户,若是合法则跳转到信息的页面,不合法则告知用户名密码错误。
但是我们在第一步给服务器发完/login接口后,服务器就忘记了。。。忘记了你这个人,到底有没有经过认证。
所以在添加商品时/cart 你还是需要将你的账号密码和商品信息一起提交给 addCart接口,再让服务器做验证。
第三步同理。
1.4存在的问题:
所以我们说涉及到交互时,情形就完全不一样了,因为这三步是有依赖关系的,第一步验证登录者是一个合法用户,验证通过给你返回200/OK,但是只要服务器给返回了响应,那么一个是一个实际存在的、具体的东西,协议中定义在 header 中的字段。session 是一个抽象概念、开发者为了实现中断和继续等操作,将client和server之间一对一的交互,抽象为“会话”,进而衍生出“会话状态”,也就是 session 的概念。即session描述的是一种通讯会话机制,而cookie只是目前实现这种机制的主流方案里面的一个参与者,它一般是用于保存session ID。
Token的相关讲解见 http://weixin.niurenqushi.com/article/2017-03-20/4794863.html
HMac介绍:hmac
参考文章:
https://jianshu.com/p/bdc97c096fbc
http://weixin.niurenqushi.com/article/2017-03-20/4794863.html
作者:翎野君
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。