一根烟的时间,读懂什么是HTTP无状态

来自:Python之禅(微信号:VTtalk),作者:刘志军

为了让你们看到这篇干货文章,我也是拼了,不知道什么样的标题你才会进来看,初学者搞不明白什么是 HTTP 无状态,面试中也时常会被问到,现在我给你举个例子就明白


一天学生 A 去拜访老教授 B


A:教授好,我是小 A,我有问题想请教你,balabala 

B:小 A 你好,balabalabala


第二天学生 A 又去找老教授


A:教授好,我是昨天刚拜访过你的小 A,我还有个问题想请教你,balabala 

B:昨天?见过?我昨天见过很多人,不知道你是哪位。


不是教授记性不好,而是因为教授是个脸盲,因为长的都是冰冰脸,所以看脸根本认不出谁是谁,这就是无状态的特点,每次来的人我都是一视同仁的,因为你们都是不带状态的。


在计算机网络中,客户端与服务端使用无状态 HTTP 协议通信时,意味着每个请求都是独立的,这在互联网早期是非常方便而且高效的,因为早期的互联网就是获取一个文本信息就完事,但是互联网发展变得越来越多样化,有时后续处理还需要前面的信息,在无状态条件下你必须重传,这样可能导致每次连接传送的数据量增大。例如你在购物网站够买东西时,第一次请求把商品加入购物车,第二次请求准备结账时服务端却发现不知道你刚刚买了啥,这样就有问题了。


教授为了记住每个到访的人,他想出办法,给第一次来访的每个人一张纸条,并写上来访人名字(这里假设唯一)。第二次你去拜访时就带上这张纸条去找教授,教授看纸条一眼就认出你是小 A 。这就是 HTTP 的 Cookie 机制。Cookie 就是那张纸条。


Cookie 机制就是为了解决 HTTP 协议无状态带来的弊端。还是以购物为例,第一次请求把商品加入购物车,同时服务端返回一个 cookie 信息给客户端,第二次客户端准备发起结账请求时,顺便把 cookie 也传回给服务器,服务器发现查到 cookie 对应的是 A 用户,就从数据库中找到 A 购买的东西并给他结算。



这些知识要从哪里获取?最好的办法就是找到一个切入点后(这篇文章就是切入点),然后去系统的学习相关知识,比如书籍或者是一些专栏,它们能很好的把知识串起来。不然你掌握的都是一些零散的东西,遇到问题时还是一筹莫展,不会去分析。


最后给你留道思考题,在 HTTP 中,我们常说的 Session 又是什么东西?

推荐↓↓↓
Web开发
上一篇:面试必考-从URL输入到页面展现到底发生什么 下一篇:微软正在打造基于 Chromium 的浏览器,意欲取代 Edge