00:01
通过前面session的工作原理,我们知道session和cookie之间的关系非常的密切,之所以我们可以实现绘画的跟踪。就是你哪一次操作的都是。同一个session是因为我们有一个cookie,有一个名称为j session ID的cookie。才实现了这样的一个。绘画跟踪。但是啊,我们在学习cookie的时候,在最后是不是给大家也说了。这cookie是不是可以禁用啊?那如果禁用了。你这个session还怎么样跟踪呢?这个意思你明白明白。
01:00
咱们再想一下啊,再想一下。这个工作原理。是怎么说的?看一下工作原理。当我们的用户第一次提交请求,请求solve是吧?这个执行到了request get session以后会干嘛?它会生成。俩东西,一个是一个32位长度的随机串。一个是session对象。然后把这个。32位长度的随机串作为key,把session对象的引用作为value放到了session列表,这是没问题的,对吧?和cookie也没关系。紧接着,他还做了一件事。就是把那个32位长度的随机串。
02:00
包装成了一个cookie,当然这个cookie的name叫做j session ID。然后放到了响应投入响应报头里边,然后发送给了客户端。这是服务端的cookie,好像和禁用也没关系。再看这。客户端呢?客户端会接收到服务器发送过来的cookie。然后放到哪,放到浏览器的缓存。放到浏览器的缓存,然后在用户第二次进行请求提交的时候,会将缓存里边这个cookie,那个cookie j session ID的那个cookie发送给服务器。注意,问题就出在这儿。如果说客户端禁掉了。
03:03
裤。那服务端给他发过来的这个带有cookie的响应。客户端浏览器不会将这个cookie接收,你不接收就意味着什么。我用户又提交请求,又提交请求的时候,里边会不会携带cookie啊,肯定不会携带,肯定不会携带,就会出现一个问题。什么问题?服务器一看呀。他跟我。提交的这个情节里边。有j session ID,这个cookie没有。没有,没有说明什么,没有说明这是第一次访问我这个,所以怎么办呢?我会再给你生成一个cookie。这个cookie。
04:02
它的K是我又生成的一个32位长度的字符串,然后再给你创建一个session。然后把这个。32位长度的轴串。再放到。下用中以cookie的形式发送给客户端,客户端又不接收。他说出问题了,也就是说客户端每一次提交的请求,他认为都是新的。这个我不知道咱们大家理解了没有,这样我们通过一个程序。我们这样通过这个程序啊。呃,给大家演示一下刚才说的这个意思,把这删掉了。咱们这样吧,咱们就拷贝它。这个叫。32。
05:01
嗯。叫什么?我们叫这吧。比较长啊。名字不怕长。长了。啊,我们可读性强是吧,一看就知道什么意思啊,这个例子是解决什么问题的啊好。那现在来看。看这个啊。那这个页面还让他有吧。这个。这样咱们这个solid呀。
06:00
嗯,我就不要他了。要他不要呢?不要了。The other so,我就不要了。留着吧,不要他也留着吧。把这个代码改一下。接收用户请求。放入青秋玉。Session都不要了。简单啊。向三山狱中。写入。写入属性。像三身狱中写入属性,我看看啊,帮我想一下不要了。这也不要了。就这。
07:01
我们就看一下这个session。就看一下这个session啊。啊,阿sir先不管他。这个就不填了啊,咱也不接收这个参数,干脆这样。免得大家回头自己练习的时候啊,不知道这为什么写个表单呢,Index page,实际上也就是说我这个index页面就没啥用处了啊。然后这边我就直接访问萨看好。
08:10
阿萨姆。诶405哦,Get,你看这。叫do post是吧?Do get啊,我们现在要do get。好的,重新发布过了。大家看。有没有J30ID啊,有这个吧。是不是?好。现在我把这个拷贝下来。嗯。
09:01
放大些。让大家看着这个啊,我拷贝下来它,诶不保存了啊。紧接着。大家看。紧接着我现在再访问他。你觉得这边还有没有这30ID了。有没有?不会有了吧?为什么?因为你客户端是不是已经有了这那个cookie了,这次我要这儿要给你把那个cookie给你发过去。你看是不是。这次没了吧。但是这。这发过去的和刚才那个肯定一样吧。这俩肯定一样。没问题吧,是不是这俩是一样的啊好。
10:02
现在我要给你改了。怎么改呢?我要把这个cookie给他禁掉。怎么进库克了,在这儿。直接把它去掉。确定好了,Cookie禁掉了。页面从打开。你客户端禁掉cookie,注意啊和。服务器是没关系的啊。看着。走。我们就看我们提交的这个就行了。你看。这是不是发过来一个。记着啊,这这这相,这第一次提交请求。
11:02
是不是现在这新的一个客户端呢,因为我刚把刚才那个页面关了,这是不是又打开一个。好,这和他就没关系了啊,不要了。这是一个啊。紧接着。停掉,清掉。我直接刷新。这样吧。我直接一刷新,是不是相当于我提交第二次请求,按理说提交第二次请求是不是客户端应该把那个cookie。里边携带的G30IT给他发的,发给是不是服务器啊。服务器不会再生成session了。有没有?没有,是不是服务器又给我们生成一个。Session。你看看。和这个一样不一样,这俩一样不一样,它不一样。
12:06
你再看。哎,算了。这个没记录。你看。看这个。是不是又生成一个。哪一次都生成一个G30ID。其实。这上面的这个每一次都变化。这上面这个啊,这样你看一下它,咱们现在不注意它了,看它我刷新一个,你看这个30对象变了没。变了没刷新一下是不是变一个呀,变一个什么意思,就意味着我的服务器给你新建了一个。为什么?因为你每一次提交这个请求的时候,它里边都没有那个j session ID的那个cookie。
13:03
所以服务器一看没有那个GID的cookie怎么办?就认为这是第一次请求,第一次请求我就会给你生成一个32倍长度的磁符串,然后再给你生成一个session,然后把这俩东西放到哪儿,放到三列表。他每一次都会做这个工作。所以大家现在理解这个意思了吧?那就是啊。这确实出问题了呀。那我要禁掉啦。Cookie session还不能用呢。是不是?能用不能耐?是可以的,大家看啊看着,就以他为例。就以他为例啊。
14:00
我把它拷贝下来。是这个啊,这现在的是这个。我这次再发请求。我再发请求。那是不是这次请求还不会携带cookie啊,但我这次不携带cookie了,我拷贝他看好CRC。然后我给这儿。加个分号,注意是分号不是问号啊,分号,然后j session ID等于。把这个东西给他粘过来,用拷贝的这个给他粘过来。你看好,你看好看好什么?看好这个session。看好这个session变了没有,现在这个session是谁?
15:00
现在这三这字太兴是吧。咱们就不看前面的了。看他。看好啊。停掉。清调走。哎,你发现没?发现什么?发现这儿没?你看这是不是没有给我们生成新的,给我们传过来新的cookie没有吧,这是不是也没携带呀,诶这个这个变了没。好像变了呀。是不是不一样了吧?好,不一样了,没事儿。
16:02
继续,我继续访问这个东西,我继续访问他啊,看着。走。这边是不是服务器还没给我传,这边我也没给往网上传这个cookie是吧,看他。一样,不一样。一样吧,是同一个session吧。没问题吧,我再刷新,现在我就不看这边了,我就直接看它,看这变不变。是不是不变呐。对不对。仍然用的是同一个算式,这是不是就实现了绘画跟踪啊,所以如果说啊。
17:09
客户端禁掉了cookie,能不能跟踪这个绘画可以就这样跟踪。就OK了,一样是可以跟踪到的。一样是可以跟踪到的。哎,我这有个突然有个想法啊。咱们做个实验,做个什么实验,看着清掉清掉,看这个我给你做这个实验,你能看明白不能啊。这现在都不要了。停掉。这个我现在也暂时不看它了,我现在要看谁呢,还看原来这个老的啊。嗯,把这个先去掉。
18:06
好,这个赛事没失效。这个三扇是不是失效了,也给他进,也给他先住掉,先给他住掉啊,不然我们三审失效好。软。走。好了,大家注意。假设。现在这是淘宝,你注意啊,假设这是淘宝网。然后我登录了。走。这一访问服务器给我们生成一个GSID对吧。拷贝过来。G3ID是他。
19:01
这是我们的对吧。这他给我的。好。你逛逛逛逛了一会儿啊。逛了一会儿,然后呢。然后把页面关了。起来早了。把页面关了。光明走了,这起来走了啊。你在哪儿呢?在网吧呢?紧接着。人家又来一个人。又哎,怎么能拷贝他呢。Yeah。坏了,坏了坏了。好。
20:05
紧急人,又来一个人,这样吧。又来个人啊,人家给你这写了个分号j session ID等于等于什么呢?人家把你这个东西给你记下来了。CC。康威。就放这儿了。你看清楚啊。现在给你放这儿了。放这儿以后。咱们记录一下看看啊,看看会出现什么情况啊。这样我把后台清一下。后台,当然这后台也没东西是吧。
21:00
看好。走。我们。就这个吧。你看看服务端没给我们生成cookie吧?是不是没生成cookie呀,忘了这是get方式啊,那这个演示还得还得给他改回来。还得给他改回来。改成什么?这这这这还麻烦一些呢。得把它改成get。改成get了啊,再重新发布,那要重新发布的话。啊,那这个就就得重新来了啊,咱们这个刚才那个演示就得重新来,那这堆东西就不能要它了。
22:03
重来了啊,这这这提交方式错了,当然了,提交方式错了,这也得改。这是get。什么意思?怎么post了?我难道?我这次过来了啊。好,这次过来咱们。看着啊。
23:02
那这这这掩饰这种例子啊,确实麻烦。因为那个session已经生成了啊,我们现在得从这另起一个页面了。打开it watch,我监控了。走。看着我记下了这32地。然后还记下来。Session。孩子下来30。好,这刚才说了啊,这在哪呢?你登录的是淘宝,你在逛逛逛逛逛完了。
24:02
然后呢?然后这个把东西放购物车了。放购物车了。然后就关了。把这个页面就关了,当然了,你要把这个页面关了啊,我把它复制一下。页面关了起来,走了。走了以后,有个人过来了。他还用你的电脑。然后他给他说了个分号j session ID等于等于什么?他记下来你刚才这个号了。看谁。康威。早。
25:00
大家发现没有啊?这边儿没再给我生成。G30ID。是吧?这边我就没发cookie啊。客户这发了一个这个东西。这发了一个这个东西,你看看他session。这个和原来那个一样不一样。一样,不一样。一模一样,你知道session一样意味着什么吗?Session一样,就意味着他获取到你的session了,获取到你的session,你的购物车是什么?在哪放着的?你知道吗?购物车就在session里边的,也就是说他现在就完全操作了你的账户了。他就以你的身份登录进去了,然后可以把收货地址改成他的,紧接着你回到家了是吧,然后登录了,登录以后呢。
26:03
你要结算。你付款也付款好了。你没注意这个收货地址啊。诶,这个商品就发送了。只不过不是发给你的,是发给那个人的。那我想给大家说的是什么意思呢?我刚才是吧,不是我刚才是你刚才你刚才是不是已经把这个页面关了,诶根据我们之前说的什么叫一次会话,打开了一个浏览器,紧接着我在里边操作,紧接着我把页面关了,是不是这个。这个绘画是不是就结束了?霍焕奇说,为什么现在又重新打开了呢?这就说明一个问题。我们所说的这个绘画。站在用户角度来说啊,什么叫一次会话?打开浏览器,在里边操作,然后把浏览器关闭,这一次会话结束了。但对于服务器来说,什么叫。
27:08
你这个浏览器,你客户端的会话开始和结束,你第一次访问我,你的。绘画开始了。什么时候开始结束了?什么时候你的绘画才结束?Session失效的时候?你的绘画才结束,并不是说你客户端把浏览器关了,它就。绘画就结束了。他并没有结束。这个30人在我们的服务器里保存的,还有所以。这也是为什么啊,很多。这种和钱有关系的网站都有一个退出啊。这大家应该知道吧,这都有个正正常的退出啊,你点那个退出和你关闭浏览器关这个叉号有什么不同,关闭叉号你认为你的会话结束,但实际没有结束,而点退出它内部执行的实际上是session.invalid把。
28:20
绑定的这些数据全部就都解绑了,你这个session已经失效了。所以即使我能获取到你的g session ID已经一点用都没有了,因为session已经失效了。当然了,有同学说了,那session失效了,我放到购物车里边东西还有吗?这你不用担心,这人家写的程序里边在session失效之前会把你的数据保存到数据库,这你不用担心这个。所以啊,通过这个例子。让大家也了解到了什么是绘画的结束。
29:02
对于用户来说,关闭浏览器是会话结束,但真正会画的结束是。我们session的失效。OK。
我来说两句