深入理解cookie的前世今生

        提到cookie和seesion,相信很多人都知道,但是只是浮于表面,如果要他们详细的叙述原理及应用,估计很多人答不上来。

相对于session存储在服务端来说,cookie是存储在客户端浏览器的。下面我将从几个方面来说明cookie。

cookie从哪里来

      1、服务端返回

      2、客户端自己存储

cookie到哪里去

       对于浏览器来说,每当发送一个请求时,浏览器会检查该域名下面的cookie,如果存在,浏览器就会在http请求头中加上该cookie,发送给服务的。对于android和ios来说,其提供的http api会处理

cookie存储在哪里

      cookie存储在客户端磁盘上,以域名分组存储

怎样查看cookie

       三步,看图

        

下面通过12306来具体分析下cookie怎么用

首先我清除  kyfw.12306.cn  对应域名下的cookie,然后用charles抓包分析。

发送请求  https://kyfw.12306.cn/otn/leftTicket/init

由 2 可以发现请求头里并没有cookie,由 3 可以发现返回里服务端设置了cookie,值分别是 route, JSESSIONID, BIGipServerotn,我们不分析该cookie的作用。此时我们再去chrome里可以发现该cookie 

刚好是返回的三个。

接下来,我们继续操作,查询余票看看会发生什么

再来看看cookie

        虽然这一下,发送了很多请求,但我们发现,这些请求中除了最后一个查询余票的请求浏览器始终没有返回cookie,而从2我们可以发现这个请求比上一个请求返回的cookie多了7个cookie,当然你也可以去浏览器查看下,我查看过了,浏览器也有了这些cookie,我就不贴图了。既然浏览器并没有返回,那么这些cookie是从哪儿来的呢?还记得,上文中,我们说过cookie的两种来源吗,此时就是第二种,由客户端自己生成的。那么作为一个严谨的程序员,我们必须找到生成这些cookie的地方。

        怎么找呢?我们知道,这些cookie是在点击  查询  按钮后生成的, 能生成cookie的只有 js 了,所以我们只要找到第一次请求后返回的js中哪个文件是操作cookie的就可以了。可以先看下所有js文件的文件名,很辛运很快就找到了。

相信到这里,大家都知道cookie是怎么一回事了吧。

猜你喜欢

转载自blog.csdn.net/Lonely_Devil/article/details/81119386
今日推荐