HTTP响应包括状态行、响应头、响应体三个部分,格式如下:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1254
Connection: keep-alive
<!DOCTYPE html>
<html>
<head>
<title>Example Page</title>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
其中,状态行由HTTP协议版本、状态码和状态消息三部分组成;响应头由多行键值对组成,以空行分割响应头和响应体;响应体为服务器响应的实际内容。
下面分别对状态行、响应头和响应体做详细说明。
状态行
状态行由三个部分组成,用空格分隔,格式如下:
HTTP/1.1 200 OK
其中:
- HTTP/1.1:指定HTTP协议版本
- 200:指定HTTP状态码,表示请求成功
- OK:指定状态消息,简要说明状态码的含义
HTTP状态码是指每个HTTP响应的状态标识,数字代码表示。下面列举一些常见的状态码:
- 200 OK:表示请求成功,正常返回响应数据
- 301 Moved Permanently:永久性重定向,请求的资源已经被分配了新的 URL
- 302 Found:临时性重定向,请求的资源已经被暂时分配了新的 URL
- 400 Bad Request:表示请求语法错误,服务器无法处理此请求
- 401 Unauthorized:表示请求需要身份验证,但客户端没有提供正确的身份验证信息
- 404 Not Found:表示请求失败,请求的资源未找到
- 500 Internal Server Error:表示服务器内部错误,无法完成请求
响应头
响应头由多行键值对组成,每行以冒号分隔键和值,格式如下:
Content-Type: text/html
Content-Length: 1254
Connection: keep-alive
常见的响应头字段包括:
- Content-Type:指定响应体内容的类型
- Content-Length:指定响应体内容的长度
- Connection:指定TCP连接是否要保持持久连接
- Cache-Control:指定浏览器和缓存服务器如何缓存响应的负载
响应体
响应体实际上就是服务器返回给客户端的内容,格式根据Content-Type头字段指定的内容类型而有所不同。下面举例两种常见的Content-Type头字段类型。
Content-Type: text/html
当Content-Type头字段的值为text/html时,响应体通常包含HTML代码,如下所示:
<!DOCTYPE html>
<html>
<head>
<title>Example Page</title>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
Content-Type: application/json
当Content-Type头字段的值为application/json时,响应体通常包含JSON格式的数据,如下所示:
{
"name": "John",
"age": 30,
"city": "New York"
}
以上是HTTP响应的格式以及常见的状态码、响应头字段和Content-Type类型的简介。不同的应用场景和不同的业务需求会有不同的响应格式和响应内容,所以具体的实现方法需要根据实际情况进行调整。