📜  HTTP-消息(1)

📅  最后修改于: 2023-12-03 15:31:20.172000             🧑  作者: Mango

HTTP 消息

HTTP(Hypertext Transfer Protocol)是用于在 Web 中传输信息的协议。HTTP 消息是在客户端和服务器之间交换的信息。

HTTP 消息结构

HTTP 消息分为两个部分:请求消息和响应消息。

请求消息结构

HTTP 请求消息由三个部分组成:请求行、消息头和消息体。

请求行

请求行包含请求方法、URL 和 HTTP 版本。一个示例请求行:

GET /index.html HTTP/1.1
请求方法

请求方法指出了客户端请求服务器执行的操作类型。HTTP/1.1 定义了多种请求方法,例如:

  • GET:请求获取指定的资源
  • POST:提交数据到指定的资源,通常用于提交表单或上传文件
  • HEAD:请求获取资源的元数据,但不传输响应正文
  • PUT:上传指定的资源
  • DELETE:删除指定的资源
  • OPTIONS:列出可对资源执行的操作
URL

URL 指出了要请求的资源。一个 URL 包括一个协议、一个域名或 IP 地址、一个端口以及一个资源路径。例如:

https://www.example.com:443/index.html
HTTP 版本

HTTP 版本指出了客户端使用的 HTTP 协议版本。HTTP/1.1 是当前广泛使用的版本。一个示例请求行:

GET /index.html HTTP/1.1

消息头

消息头包含了一些元数据,用于描述请求或响应。消息头由一组名称和值对组成,每一对名称和值都由冒号分隔符分开,例如:

Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
常用的消息头

下面是一些常用的消息头:

  • Host:服务器的域名或 IP 地址
  • User-Agent:客户端的浏览器、操作系统等信息
  • Accept:客户端可处理的媒体类型,例如 text/html 和 application/json
  • Accept-Language:客户端可处理的自然语言,例如 en-US 和 zh-CN
  • Cookie:客户端发送给服务器的 cookie
  • Content-Type:消息体的 MIME 类型,例如 text/plain 和 application/json
  • Content-Length:消息体的长度,以字节为单位

消息体

消息体包含了客户端提交给服务器的数据,例如表单数据和上传的文件。

响应消息结构

HTTP 响应消息由三个部分组成:状态行、消息头和消息体。

状态行

状态行包含了 HTTP 版本、状态码和状态描述。一个示例状态行:

HTTP/1.1 200 OK
HTTP 版本

HTTP 版本指出了服务器所使用的 HTTP 协议版本。

状态码

状态码是由服务器返回的三位数字,用于说明请求的处理结果。HTTP/1.1 定义了多种状态码,例如:

  • 200 OK:请求成功
  • 301 Moved Permanently:被请求的资源已永久移动到新位置
  • 404 Not Found:请求的资源不存在
  • 500 Internal Server Error:服务器遇到了错误,无法完成请求
状态描述

状态描述用于解释状态码。例如,状态行 HTTP/1.1 200 OK 中的 OK 表示请求成功。

消息头

消息头包含了服务器返回给客户端的元数据,用于描述响应。消息头由一组名称和值对组成,每一对名称和值都由冒号分隔符分开,例如:

Content-Type: text/html
Content-Length: 1024

消息体

消息体包含了服务器返回给客户端的数据,例如 HTML 页面和 JSON 数据。

HTTP 消息交互

客户端通过向服务器发送 HTTP 请求来请求资源,服务器通过向客户端发送 HTTP 响应来返回资源。整个请求响应过程如下图所示:

HTTP 消息交互过程

总结

HTTP 消息是在客户端和服务器之间交换的信息。它由请求消息和响应消息组成,每个消息又由请求行或状态行、消息头和消息体组成。客户端通过向服务器发送 HTTP 请求来请求资源,服务器通过向客户端发送 HTTP 响应来返回资源。掌握 HTTP 消息的结构和交互过程,对于 Web 开发工作很有帮助。