HTTP(超文本传输协议)是一种用于传输超媒体文档的协议,它定义了客户端和服务器之间请求和响应的消息结构。HTTP消息由一系列标准头部字段、一个空行和可选的消息体组成。
客户端请求消息
请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
请求行:由方法、请求 URI 和 HTTP 版本构成。
1. 方法:指定要执行的动作,如 GET、POST、PUT、DELETE 等。
2. 请求 URI:请求的资源的 URI。
3. HTTP 版本:使用的 HTTP 协议版本,如 HTTP/1.1 或 HTTP/2。
HTTP 头部字段提供了关于消息的元数据,包括:
通用头部:如 Date、Cache-Control、Connection 等。
请求头部:如 Host、User-Agent、Accept、Authorization 等。
响应头部:如 Server、Content-Type、Set-Cookie 等。
实体头部:仅用于包含消息体的请求或响应,如 Content-Length、Content-Encoding 等。
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
服务器响应消息
HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain