seegongsik
我的单词本
网络

再来也记得我,会话和 Cookie

前面我们学过,HTTP 很健忘,每次请求都把我们当成第一次来的客人。可你一旦登录,就能保持登录好一阵子。一个每次都忘记的服务器,怎么一直认得你呢? 秘密就在一张小小的通行证上。

01

健忘,所以登录老是掉

前面我们学过,HTTP 很健忘。
一个请求结束,它就把我们忘得干干净净。
所以下次再请求时,
它把我们当成第一次来的客人。
这就冒出一个怪事。
我们只登录了一次,
为什么能保持登录好一阵子?
要是每次都忘,
每次来都该重新登录才对。

健忘的服务器登录掉了
按按钮去访问服务器

按一下访问按钮。健忘的服务器每次都忘,所以每次来访登录都掉,得重新登录。

如你所见,太不方便了。
每次来访都要登录,
很快就累垮了。
可也不能让服务器
把每一个客人都背下来。
世上客人实在太多。
所以用一个聪明的法子。
服务器不去记,
而是塞给客人一张小票。

02

服务器发一张小通行证

第一次来时,
服务器给客人一张小票。
这张票叫 Cookie。
票上写着一个号码。
就像“你是 7 号客人”。
想想游乐园发的
手环或入场印章就好懂。
服务器只要记住那个号码,
就不用一个个去背众多客人。

现在客人手里
有了一张写着号码的通行证。
服务器把这个号码
和这位客人连起来记下。
要紧的是
通行证由客人随身带着。
不是服务器全背下来,
而是客人保管自己的号码。
那这张通行证
该什么时候再拿出来给看呢?

03

每次来访都出示通行证

拿到通行证的客人,
就把它揣进口袋。
下次再向服务器请求时,
就连同那张通行证一起出示。
一边说“我是 7 号客人”。
每次来访都一起递出去。
就像在请求的纸角
写上号码再发出去。
所以服务器一看请求,
就立刻知道是谁发的。

服务器
第 1 次请求
通行证 7 号
第 2 次请求
通行证 7 号
第 3 次请求
通行证 7 号
按访问按钮,把请求和通行证一起发出

按一下访问按钮。客人每次都连同请求一起递出通行证号码。

现在客人每次请求,
都把同一个号码一起发来。
从服务器这边看,
号码每次都到手了。
它健忘记不住客人,
但号码随请求一起来,就没事。
那服务器
看到那个号码会做什么呢?
拿它和自己记下的名单
对一对就行了,对吧?

04

啊,那个人! 它认出你

通行证号码一到,
服务器就翻开记下的名单。
“7 号是谁来着”地找。
在名单上找到 7 号,
就认出你:“啊,那个人!”
这样把你是同一个客人这条线,
在一次次来访之间接着记下去,
正是会话。
多亏它,登录不掉,
一直接着用。

到达的通行证
服务器名单
3 号客人
7 号客人
12 号客人
点一下到达的通行证号码,在名单里找它

点一下到达的通行证号码。服务器在名单里找到它,认出“啊,那个人!”,让登录接着用。

本来是健忘的服务器,
现在却能轻松认出我们。
诀窍不是服务器记住了,
而是客人随身带着通行证。
服务器只要号码和名单对上,
再多客人也轻松应付。
不过有一件
要小心的事。
要是号码对了谁都能过,
捡到别人的通行证怎么办?

05

来理一理

归成一句话,是这样。
HTTP 很健忘,每次都把我们当第一次来的客人。
服务器发一张小通行证(Cookie)。
客人每次来访都出示那张通行证。
服务器看号码就说“啊,那个人!”。
这样接着记住是同一个客人,就是会话。
多亏它,不用每次都重新登录。
记的活儿交给客人的通行证,
服务器只要把号码对上就行。

1. HTTP 健忘,每次都当第一次来的客人
2. 服务器发通行证(Cookie)
3. 每次来访都出示通行证
4. 靠号码认出 = 会话
按按钮,依次回顾要点

依次点要点回顾一下。(健忘是问题 → 发通行证(Cookie) → 每次来访都出示 → 啊,那个人!(会话))

现在你知道服务器
怎么再认出我们了。
可只要通行证号码对上,
那是不是真的你,
还没核实过。
拿着号码的人
真的就是那个人吗?
要是被别人截走怎么办?
这个核实是否可信的故事,
下一个领域一起跟着看。

一句话总结HTTP 很健忘,每次请求都把我们当成第一次来的客人。要是不管,登录每次都该掉。解决这个的就是 Cookie 和会话。第一次来时,服务器发给你一张小小的通行证,也就是 Cookie。客人之后每次来访,都再把那张通行证拿出来。服务器看通行证上的号码,就说“啊,那个人!”。把这是同一个客人这条线一直记下去,就是会话。多亏它,你不用每次都重新登录。靠通行证号码认出你是谁,这件事接着引出认证的故事,认证要核实你真的是那个人。
网络
如果有帮助,请支持我们