Author: Xu FC
HTTP 协议
HTTP (Hypertext Transfer Protocol, 超文本传输协议) 是常见的应用层传输协议。该协议有诸多版本,目前应用最广泛的为 HTTP/1.1 版本。
-
HTTP/0.9 和 HTTP/1.0版本,目前已很少应用,除非研究 HTTP协议发展历史,不建议多做研究。
-
HTTP/1.1:https://tools.ietf.org/html/rfc7230
HTTP/1.1 报文结构
HTTP-message = start-line
*( header-field CRLF )
CRLF
[ message-body ]
- 行结束符: CRLF
- HTTP header-field 与 message-body 之间以空行分割。
- Partial Content 的 body part 之间以空行分割。
HTTP/1.1 请求
HTTP/1.1 请求示例
- Start-line: 红框部分为请求行,其中包括
- Request method(红字部分)
- URL(绿字部分)
- HTTP 版本(橘字部分)
- Header-field:绿框部分为请求头部域,其中
- Header name(棕色部分)
- Header value(蓝色部分)
- Header name 与 header value 以冒号(:)分隔
- 一个 header 多个值,各值之间以逗号(,)分隔
- Header value 中的 值 与 属性 之间以分号(;)分隔
- Cookie header 中的各个 cookie 以逗号或分号(,|;)分隔
- Message-body:黄框部分为请求主体,并不是所有请求都带 message-body, 比如 HEAD 等请求不带 body,POST 等请求带 body。
HTTP/1.1 应答
HTTP/1.1 应答示例
-
Start-line: 红框部分为应答行,其中包括
- HTTP 版本(橘字部分)
- 响应状态码(绿字部分): 三位数字
1xx:收到请求,请继续
2xx:收到并完成请求
3xx:重定向
4xx:客户端错误
5xx:服务器错误 - 原因短语(红字部分)
-
Header-field:绿框部分为应答头部域,结构同请求头部域
-
Message-body:黄框部分为请求主体,并不是所有应答都带 message-body, 比如 HEAD 请求的应答不带 body。
网友评论