这是我参与「第四届青训营 」笔记创作活动的的第11天
初始HTTP
- Hyper Text Transfer Protocol(超文本传输协议)
- 应用层协议,基于TCP协议
- 请求响应
- 简单可扩展
- 无状态
协议分析
发展
-
HTTP/0.9
- 请求GET/mypage.html
- 响应只有HTML文档
- 单行协议
-
HTTP/1.0
- 构建可扩展性
- 增加了Header
- 有了状态码
- 支持多种文档类型
-
HTTP/1.1
- 链接复用
- 缓存
- 内容协商
- 标准化协议
-
HTTP/2
- 更优异的表现
- 二进制协议
- 压缩header
- 服务器推送
-
HTTP/3
- 草案
报文
- Method
- GET:请求一个指定资源的表示形式使用GET的请求应该只被用于获取数据
- POST:用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用
- PUT:用请求有效载荷替换目标资源的所有当前表示
- DELETE:删除指定的资源
- HEAD:请求一个与GET请求的响应相同的响应,但没有响应体
- CONNECT:建立一个到由目标资源标识的服务器的隧道。
- OPTIONS:用于描述目标资源的通信选项。
- TRACE:沿着到目标资源的路径执行一个消息环回测试。
- PATCH:用于对资源应用部分修改。
safe:不会修改服务器的数据的方法
Idempotent:同样的请求被执行一次与连续多次的效果是一样的,服务器的状态也是一样的
- 状态码
用来标识响应的状态;由三个十进制数字组成;第一位十进制数字定义了状态码的类型。
http状态码分为5种
-
1** 信息,服务器收到请求,要求请求者继续执行操作
-
2** 成功,操作被成功接收并处理
- 200:OK;请求成功,一般用于GET和POST请求
- 201:Greated;已创建,成功请求并创建新的资源,用于POST或PUT请求
-
3** 重定义,需要进一步的操作以完成请求
- 301:永久移动,请求的资源已被永久的移动到来新的俩
- 302:临时移动,和301类似,但只是临时
- 304:未修改,不会返回任何资源,客户端会缓存访问过的资源
-
4** 客户端错误,请求包含语法错误或无法完成请求
- 400:语义有误,请求参数有误:请求无法被处理
- 401:当前请求需要用户验证
- 403:服务器已理解请求,但拒绝执行
- 404:服务器无法根据请求找到资源(网页)
- 408:请求超时
-
5** 服务器错误,服务器再处理请求的过程中发生了错误
- 500:服务器内部错误,无法完成请求
- 501:服务器不支持该请求方法,只有GET和HEAD请求方法是要求每个服务器必须支持的。
- 503:由于超载或系统维护,服务器暂时的无法处理客户端的请求
- 请求头
请求头:用于描述客户端的基本信息,并告知服务器。
- User-Agent:用于说明当前浏览器类型
- Content-Type:用于描述发送到服务器的数据格式
- Accept:用于描述客户端能够接收说明类型的返回内容
- Accept-La:用于描述客户端期望接收那种人类语音的文本内容。
- Host:要请求的服务器域名
- Connection:客户端与服务器的连接方式
- Content-Length:用于描述请求体的大小
- Accept-Encoding:客户端可接收的内容压缩编码形式
- 更多请求头字段的描述:MDN官方文档
常见场景
- 静态资源
- 登录
- 业务场景:表单登录、扫码登录
- 技术方式:SSO
\