Skip to content

消息格式

HTTP报文是客户端与服务器之间进行通信的基本单位。HTTP报文分为请求报文和响应报文两种类型。以下是对HTTP报文格式的介绍,以及常用的请求头和响应头。

HTTP报文格式

1. 请求报文格式

HTTP请求报文由以下部分组成:

  • 请求行:包含请求方法、请求URI和HTTP版本。

    • 示例GET /index.html HTTP/1.1
  • 请求头:包含多个键值对,用于传递额外的信息。

    • 示例
      Host: www.example.com
      User-Agent: Mozilla/5.0
      Accept: text/html
  • 空行:请求头与请求体之间的空行,表示请求头的结束。

  • 请求体:可选部分,包含请求的具体数据(如POST请求中的表单数据)。

2. 响应报文格式

HTTP响应报文由以下部分组成:

  • 状态行:包含HTTP版本、状态码和状态描述。

    • 示例HTTP/1.1 200 OK
  • 响应头:包含多个键值对,用于传递额外的信息。

    • 示例
      Content-Type: text/html
      Content-Length: 1234
      Set-Cookie: sessionId=abc123
  • 空行:响应头与响应体之间的空行,表示响应头的结束。

  • 响应体:包含实际返回的数据,如HTML文档、JSON数据等。

响应码规则

HTTP响应码是由三位数字组成的代码,用于指示请求的状态。响应码分为五类:

  • 1xx (信息性状态码):表示接收的请求正在处理。

    • 100 Continue:客户端应继续其请求。
    • 101 Switching Protocols:服务器已理解客户端的请求,并将通过升级协议来进行处理。
  • 2xx (成功状态码):表示请求已成功被服务器接收、理解和处理。

    • 200 OK:请求成功。
    • 201 Created:请求成功并且服务器创建了新的资源。
    • 204 No Content:请求成功,但返回的响应报文中不含实体的主体部分。
  • 3xx (重定向状态码):表示需要客户端采取进一步的操作才能完成请求。

    • 301 Moved Permanently:请求的资源已被永久移动到新位置。
    • 302 Found:请求的资源临时从不同的URI响应请求。
    • 304 Not Modified:客户端发送了一个带条件的GET请求且允许使用缓存响应。
  • 4xx (客户端错误状态码):表示请求包含语法错误或无法完成请求。

    • 400 Bad Request:请求报文存在语法错误。
    • 401 Unauthorized:发送的请求需要有通过HTTP认证的信息。
    • 403 Forbidden:服务器理解请求客户端的请求,但是拒绝执行此请求。
    • 404 Not Found:请求的资源在服务器上不存在。
  • 5xx (服务器错误状态码):表示服务器在处理请求的过程中发生了错误。

    • 500 Internal Server Error:服务器遇到了不知道如何处理的情况。
    • 501 Not Implemented:服务器不支持当前请求所需要的某个功能。
    • 502 Bad Gateway:作为网关或代理工作的服务器从上游服务器收到无效的响应。
    • 503 Service Unavailable:服务器暂时处于超负载或正在进行停机维护,无法处理请求。

常用请求头

以下是一些常用的HTTP请求头:

  • Host:指定请求的主机名和端口号。
  • User-Agent:客户端软件的信息,通常包含浏览器类型和版本。
  • Accept:客户端能够处理的内容类型,如text/htmlapplication/json等。
  • Content-Type:请求体的内容类型,通常在POST请求中使用,如application/x-www-form-urlencoded
  • Authorization:用于身份验证的凭证,如Bearer Token。
  • Cookie:发送给服务器的Cookie信息。

常用响应头

以下是一些常用的HTTP响应头:

  • Content-Type:响应体的内容类型,指示浏览器如何处理响应数据。
  • Content-Length:响应体的长度,以字节为单位。
  • Set-Cookie:设置Cookie,供客户端存储。
  • Cache-Control:指示缓存机制的指令,如no-cachemax-age=3600等。
  • Expires:指定响应的过期时间。
  • Location:用于重定向,指示客户端应请求的URL。

总结

HTTP报文是Web通信的基础,理解其格式和常用头部信息对于开发和调试Web应用至关重要。通过合理使用请求头和响应头,可以有效地管理客户端与服务器之间的交互。