扫盲篇 - cookie&session

试想一下,如果现在突然有一个面试官问你:什么是Cookie?什么是Session?你会怎么回答。

0x00 开始

我想了下,首先大脑中的经验告诉我cookie是客户端缓存信息的一种方式,session则是放在服务端。但是这种说法总觉得有些牵强,于是下面我们从一个具体的请求出发,来看看它们在实际中是怎么应用的。

0x01 从一个登录的http请求出发

请注意一个前提,http是无状态的协议,无状态导致了服务器不知道客户端处理请求的结果。也就是说我们一个登录流程,用户在网页上输入账号密码并点击登录,浏览器发送登录请求,服务器收到请求并验证用户,记录用户登录状态,然后返回成功登录的信息,最后浏览器收到成功的消息,但是在下次浏览器发送请求时,如果这时候请求没有做特殊的处理,我是无法知道这个用户是否登录的状态。

在登录请求中,浏览器发送请求后,我们看下服务端做了什么处理:

  1. 设置了session记录当前登录的用户的账号。
  2. 在返回的头信息中有一个特殊头,Set-Cookie,其中包含了sessionId的信息

sessionId也是服务端自动生成。

0x02 在app中登录

0%