一、概述
最近想尝试写一个关于网络请求的系列文章,将网络请求的基础、使用及网络框架的学习分析总结以下,大致准备从以下几个方面分析:
- 网络请求的基础
- HTTP请求方式和报文解析
- Cookie 和 Session的理解与使用
- HTTP Cache缓存机制
- 封装网络请求
- TCP 和 Socket
本文主要介绍Cookie和Session的使用和理解,先讲讲为什么会使用Cookie 和Session?大家都知道Http是基于TCP协议传输信息的,但不同于TCP的是Http协议是短链接,即当请求完成后会中断链接,这样就会产生一个问题,当用户每次请求时之间都会间隔一段时间或者在登陆之后就不再操作,那么当下次想请求数据时,发送Request到服务器,但服务器此时不知道是谁在请求,也不知道该回应谁,所以此时就出现用户的操作执行不下去了;这时就是Cookie和Session的登场了,他们的作用就是保证服务器可以知道每个请求客户端的身份,下面我们一一介绍。
二、Cookie
- Cookie技术是客户端的解决方案:服务器在用户登陆后会按照一定规律生成的标志位,将这个标志发送给客户端,客户端存储此标志,以后请求带上此标志告诉服务器自己的身份,对于这个的理解更直观的例子就是身份证,如果把国家比喻服务器,自己必做客户端,每个人在登记户口后都可以办理身份证,身份证是由国家颁发自己保存也就是Cookie,以后无论你在何时何地只要你拿出身份证就代表你身份,当你去办理车票等信息时只需出事身份证就可证明自己;
- cookie的内容主要包括:名字,值,过期时间,路径和域
- 客户端提交个人信息后,服务端返回数据的同时会在Response Header中返回Cookie信息,客户端保存在固定的位置(Set-Cookie: 设置 返回的Cookie)
- 客户端在下次请求的时候会在Request Header中携带Cookie信息,服务端根据Cookie确认用户身份(如:自动登陆)(Cookie: 设置上传携带的Cookie)
- cookie的设置以及发送过程分为以下四步:
- 客户端发送一个http请求到服务器端
- 服务器端发送一个http响应到客户端,其中包含Set-Cookie头部
- 客户端发送一个http请求到服务器端,其中包含Cookie头部
- 服务器端发送一个http响应到客户端
- Cookie有效期:由maxAge决定,在服务器返回cookie时已设置号对应的时间
- 正数:表示有效期 时间为 maxAge,需;序列化在磁盘中,超过时间失效
- 负数:临时Cookie 不序列化,保存在内存中,关闭浏览器失效