HTTP 协议
HTTP(HyperText Transfer Protocol,超文本传输协议是一种用于传输超文本的应用层协议。它是 Web 上数据通信的基础。 HTTP 是一个无状态的协议,每个请求都是相互独立的,服务器不会保存关于客户端的任何信息。
什么是无状态协议
无状态协议(Stateless Protocol)
通信过程中不会保存客户端的状态信息,服务器不会在不同请求之间保留任何关于客户端的信息。
请求信息格式
客户端会向服务器发送请求消息,请求传递的消息分都是 纯文本(字符串)
请求的消息格式
请求的消息由三部分组成,即请求行,请求头,请求体。
请求行
高度概括了客户端想要干什么
请求头
描述了一些请求的额外信息
请求体
传递给服务器的正文数据
请求方法
请求方法也叫 HTTP 动词。
方法 | HTTP 版本 1.0 | HTTP 版本 1.1 | 含义 |
---|---|---|---|
GET | ○ | ○ | 表示向服务器请求资源, GET 请求 只应该包含请求行,而不应该包含请求体。 |
POST | ○ | ○ | 表示向服务器提交数据, 通常用于产生新的数据。 |
HEAD | ○ | ○ | 类似于 GET 请求,不过它只返回 HTTP 的消息头, 而并不返回数据的内容。用于获取 文件最后更新时间等属性信息 |
OPTIONS | ○ | 发生在跨域的预检请求中,表示客户端向服务器申请跨域提交。 | |
PUT | △ | ○ | 创建一个新的资源或者使用请求体的内容直接覆盖资源,PUT 方法是幂等的。 |
DELETE | △ | ○ | 请求服务器删除指定的资源。 |
TRACE | ○ | 回显服务器收到的请求,主要用于测试或诊断 | |
CONNECT | ○ | 使用代理传输加密消息时使用的方法,把请求连接转换为透明的 TCP/IP 连接,通常用于代理服务器 | |
PATCH | ○ | 用来对已知资源进行局部更新 |
常用的请求头
-
HOST
: url 地址的主机 -
User-Agent
: 客户端软件的名称和版本号等相关信息 -
Content-Type
: 用于指示资源的 MIME 类型-
application/octet-stream
: 这是二进制文件的默认值。由于这意味着未知的二进制文件,浏览器一般不会自动执行或询问执行。 浏览器将这些文件视为 Content-Disposition 标头被设置为 attachment 一样,并弹出“另存为”对话框。 -
text/plain
: 这是文本文件的默认值。即使它其实意味着未知的文本文件,但浏览器认为是可以直接展示的 -
multipart/form-data
: 可用于 HTML 表单从浏览器发送信息给服务器 -
application/json
: 用于指 示消息主体(body)中所包含的数据是 JSON 格式的。它告诉接收端如何解析和处理传输的数据。 -
application/x-www-form-urlencoded
:是一种在 HTTP 请求中常用的编码格式,用于传输表单数据到服务器。表单数据以键值对的形式提交,每个字段名和字段值之间用 "=" 连接, 不同字段之间用 "&" 连接,同时进行 URL 编码处理。例如,键值对 "name=John&age=30" 在 "application/x-www-form-urlencoded" 编码后会变成 "name=John&age=30",然后作为请求的消息主体(body)发送给服务器。
-
响应信息格式
响应行
响应行是整个响应字符串的第一行
响应行包含两个部分
- 协议版本: 表示服务器打算用什么协议和客户端进行通信。
- 状态码,状态消息: 表示服务器对当前请求的表态。
通常,状态码 和状态消息是一一对应的,比如 200 的消息就是 OK
状态码一般分为五类
分类 | 分类描述 |
---|---|
1xx | 信息,服务器收到请求,需要请求者继续执行操作。 |
2xx |