这是我参与「第四届青训营 」笔记创作活动的的第5天
基本信息
- http(Hyper Text Transfer Protocol)也就是超文本传输协议
- 是应用层上的协议,基于TCP的协议
- 具有请求和响应两部分
- 简单可扩展,如在头部分自定义一些含义
- 无状态,每一份信息都是独立的,无法知道其他请求是什么样子的
协议发展历程
首先以http1.1为例子
⭐报文
不管是请求还是响应,都会有起始行、header、body,且结构一致
- 在请求中,会携带请求方式和请求地址等信息
- 在响应中,会携带响应状态码等信息
请求方法
方法的特点:
- Safe安全的 ---- 有一些请求是安全的的,它不会修改服务器上的数据,只是去读取信息。 如 GET HEAD OPTIONS
- idempotent幂等的 ---- 当同样的请求被执行一次与多次效果是一样的,服务器状态也是一样的,所有的safe方法都是幂等的。如 PUT DELETE 等
状态码
RestfulAPI
是一种设计风格,简单来说就是将状态码与操作准确的相结合,使用适合的语义去表达
请求头
响应头
缓存
可以分为两类,一类叫强缓存,一类叫协商缓存
- 强缓存指,如果某资源本地有,就直接使用
- 协商缓存指,如果本地有一段缓存,那么这段缓存能不能用,需要艮服务器端进行通行去询问
- 不同缓存都会有自己的一些特殊字段,在协商缓存中,字段在请求和响应里是成对的
缓存行为过程
Cookie
在这里主要来看Set-Cookie-response字段的内容
这个是服务器返回给浏览器的一些设置Cookie的信息
⭐发展- HTTP2
目前各大厂都已经切换到了http2
它具有以下优点
⭐https
https实际上及时在http的基础上经过了TSL/SSL加密的过程,在传输过程中,安全性会更高
⭐场景分析
状态码 from disk cache 也就意味着这份内容是从缓存中拿到的
静态资源
- CDN是一个内容分发的网络,有一个就近性的策略,能够让用户更快的拿到资源
- 当我们需要对某份静态资源文件修改后重新分发部署时,需要让用户拿到这一份新的文件,但在客户端可能有一个缓存机制,这个时候就需要给文件编写一个hash值,每当文件发生改变时,hash值就会改变,这样也能保证用户能够拿到最新的文件
登录
以今日头条登录页面为例子
跨域
鉴权
SSO 单点登录
⭐HTTP发起
⭐发散
http3 草案的一部分,但还没有实现