HTTPS 消息结构
HTTP 是基于客户端/服务端的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。
HTTP消息分为两种类型:
- 请求消息
- 响应消息
一个HTTP客户端是一个应用程序(Web浏览器或者其他任何客户端),通过连接到服务器达到向服务器发送一个或者多个HTTP请求的目的。
一个HTTP服务器同样也是一个应用程序(通常是一个web服务器),通过接收客户端的请求并向客户端发送HTTP响应数据。
客户端请求消息
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:
请求行(Request Line):
- 方法:如 GET、POST、PUT、DELETE等,指定要执行的操作。
- 请求 URI(统一资源标识符):请求的资源路径,通常包括主机名、端口号(如果非默认)、路径和查询字符串。
- HTTP 版本:如 HTTP/1.1 或 HTTP/2。
请求行的格式示例:
GET /index.html HTTP/1.1请求头(Request Headers):
- 包含了客户端环境信息、请求体的大小(如果有)、客户端支持的压缩类型等。
- 常见的请求头包括
Host、User-Agent、Accept、Accept-Encoding、Content-Length等。
空行:
- 请求头和请求体之间的分隔符,表示请求头的结束。
请求体(可选):
- 在某些类型的HTTP请求(如 POST 和 PUT)中,请求体包含要发送给服务器的数据。
服务端响应消息
HTTP 响应也由四个部分组成,分别是:
状态行(Status Line):
- HTTP 版本:与请求消息中的版本相匹配。
- 状态码:三位数,表示请求的处理结果,如 200 表示成功,404 表示未找到资源。
- 状态信息:状态码的简短描述。
状态行的格式示例:
HTTP/1.1 200 OK响应头(Response Headers):
- 包含了服务器环境信息、响应体的大小、服务器支持的压缩类型等。
- 常见的响应头包括
Content-Type、Content-Length、Server、Set-Cookie等。
空行:
- 响应头和响应体之间的分隔符,表示响应头的结束。
响应体(可选):
- 包含服务器返回的数据,如请求的网页内容、图片、JSON数据等。