HTTP响应报文包含哪些部分?

HTTP(超文本传输协议)响应报文是服务器回应客户端请求的方式。一个HTTP响应报文主要包括三个部分:状态行(Status Line)、响应头部(Response Headers)和消息正文(Message Body)。下面具体解释每个部分:

  1. 状态行(Status Line) 状态行位于响应报文的最开始部分,它包括HTTP版本、状态码和状态文本。

    • HTTP版本:标明HTTP协议的版本,例如HTTP/1.1或HTTP/2.0。
    • 状态码(Status Code):是一个三位数字,用来表示服务器处理请求的结果。状态码分为几类:
      • 1xx(信息性状态码):请求已被接受,需要继续处理。
      • 2xx(成功状态码):请求成功被服务器接收、理解和接受,例如200 OK是最常见的成功状态码。
      • 3xx(重定向状态码):需要后续操作才能完成这一请求,例如301 Moved Permanently表示请求的资源已永久移动到新位置。
      • 4xx(请求错误状态码):请求包含语法错误或无法完成请求,例如404 Not Found表示服务器找不到请求的资源。
      • 5xx(服务器错误状态码):服务器在处理请求的过程中发生了错误,例如500 Internal Server Error表示服务器内部错误。
    • 状态文本(Reason Phrase):简短的描述状态码的文字说明,例如“OK”或“Not Found”。
  2. 响应头部(Response Headers) 响应头部包含了若干行由键值对组成的头信息,用于提供应答的附加信息,如定义内容类型、设置Cookie等。常见的响应头部包括:

    • Content-Type:响应内容的类型,如text/html表示HTML文档。
    • Content-Length:响应内容的长度,单位是字节。
    • Set-Cookie:如果服务器向客户端发送Cookie,此头部字段会被使用。
    • Cache-Control:指定了缓存策略,例如no-cache表示不缓存响应。
    • ETag:资源的标识符,用于协助缓存处理。
    • Expires:表示响应内容过期的日期/时间。
    • Last-Modified:表示资源最后被修改的时间。
  3. 消息正文(Message Body) 消息正文是可选的,不是所有的响应都有正文。它包含了请求的具体内容。对于不同的请求,如获取网页、图片或其他文件,消息正文包含的数据类型也会不同,具体类型通常由Content-Type头部字段指定。

HTTP响应报文的结构使得服务器可以有效地向客户端传达处理请求的结果,无论是成功的内容、重定向信息、错误消息还是其他必要的指示。