一、请求的结构组成
1. 请求行(Request Line)
方法(Method)
请求URI(Request-URI)
HTTP版本(HTTP-Version)
2. 请求头(Request Headers)
请求头包含了一系列键值对,用于传递客户端信息、请求条件等附加信息。常见的请求头字段包括:
- Host:请求资源所在的主机名和端口号。
- User-Agent:发出请求的客户端的信息,如浏览器类型、版本等。
- Accept:客户端能够处理的内容类型(MIME类型)列表,用于告知服务器期望接收的数据格式。
- Accept-Encoding:客户端支持的编码压缩格式,如gzip、deflate等。
- Accept-Language:客户端偏好接收的语言,如en-US。
- Authorization:用于HTTP身份验证的凭证信息。
- Cache-Control:指示请求和响应遵循的缓存机制。
- Connection:控制持久连接的行为,如keep-alive表示希望保持连接打开。
- Content-Length:对于POST或PUT等包含数据的请求方法,表示发送数据的总字节数。
- Content-Type:实体内容的MIME类型,如application/json、text/html等。
- Cookie:存储于用户本地终端上的数据,由服务器设置。
- SSL/TLS协议版本:表示客户端和服务器之间使用的SSL/TLS协议版本,这是HTTPS特有的,用于确保数据传输的安全。
- 加密算法:表示客户端和服务器之间使用的加密算法,同样是HTTPS特有的。
- 数字证书信息:服务器发送给客户端的数字证书信息,用于验证服务器的身份。
3. 空行(Blank Line)
请求头之后必须有一个空行,用于分隔请求头和请求体(如果有的话)。
4. 请求体(Request Body)
请求体是可选的,用于POST、PUT等包含数据的请求方法中,包含要发送到服务器的数据。这可以是表单数据、JSON对象等。
二、响应的结构组成
1. 状态行(Status Line)
HTTP版本
状态码(Status Code)
状态消息(Status Message)
2. 响应头(Response Headers)
响应头包含了一系列键值对,用于传递有关服务器和响应的元信息。常见的响应头字段包括:
- Content-Type:表示响应体的媒体类型(MIME类型),如text/html、application/json等。
- Content-Length:表示响应体的长度(字节数)。
- Server:包含服务器的名称和版本号,用于标识响应是由哪个服务器生成的。
- Date:表示响应生成的日期和时间。
- Cache-Control:指示响应和请求遵循的缓存机制。
- Connection:控制持久连接的行为,如keep-alive表示连接将保持打开状态。
- SSL/TLS协议版本:表示服务器和客户端之间使用的SSL/TLS协议版本,这是HTTPS特有的,用于确保数据传输的安全。
- 加密算法:表示服务器和客户端之间使用的加密算法,同样是HTTPS特有的。
3. 空行(Blank Line)
响应头之后必须有一个空行,用于分隔响应头和响应体。
4. 响应体(Response Body)
响应体是服务器返回给客户端的实际数据,可以是HTML页面、JSON对象、图片等。响应体的内容和格式由Content-Type响应头字段指定。