HTTP协议及场景实践
基本介绍
HTTP 是一种应用层协议,是基于 TCP/IP 通信协议来传递数据的,其中 HTTP1.0、HTTP1.1、HTTP2.0 均为 TCP 实现,HTTP3.0 基于 UDP 实现。现主流使用 HTTP1.0 和 HTTP3.0
协议分析-报文
Method
safe:不会修改服务器数据的方法
idempotent(幂等):同样的请求被执行一次与执行多次的效果是医用的,服务器状态也是一样的
状态码
RESTful API
一种API设计及风格 (1)每个URI代表一种资源 (2)客户端与服务端之间,传递这种资源的某种表现层 (3)客户端通过HTTP method,对服务端资源进行操作,实现“表现层状态转化”
常用请求头
缓存
强缓存:资源如果本地存在可直接使用,包含两个header字段expires和cache-control
协商缓存:本地有缓存,依旧要与server端通讯协商,包含两个header字段Etag/If-None-match和Last-Modified/If-Modified-Since
cookie
Cookie是由服务器端生成,发送给User-Agent,浏览器会将Cookie的key/value自动保存到某个目录下的文本文件内,下次请求同一网站时就自动发送该Cookie给服务器。
cookie的表示:一般情况下,cookie是以键值对进行表示的(key-value),例如name=jack,这个就表示cookie的名字是name,cookie携带的值是jack
cookie的应用场景:
场景一:避免重复登录
当我们打开一个网站时,如果这个网站我们曾经登录过,那么当我们再次打开网站时,发现就不需要再次登录了,而是直接进入了首页。
场景二:权限验证
由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。
场景实践
开发者工具的标签选项说明:
- 元素(Elements):用于查看或修改HTML标签
- 控制台(Console):执行js代码
- 源代码(Sources):查看静态资源文件,断点调试JS代码
- 网络(Network):查看http协议的通信过程
开发者工具的使用说明:
- 点击Network标签选项
- 在浏览器的地址栏输入百度的网址,就能看到请求百度首页的http的通信过程
- 这里的每项记录都是请求+响应的一次过程
- 查看HTTP协议的通信过程