组成
HTTP协议的核心部分是其传输的报文内容,
HTTP协议的请求报文和响应报文的结构基本相同:
- 起始行(start line):描述请求或响应的基本信息;
- 头部字段集合(header):使用key-value形式更详细的说明报文。
- 消息正文(entity):实际传输的数据,不一定是纯文本,可以是图片,视频等二进制数据。
HTTP协议规定报文必须有header,但可以没有body,而且在header之后必须有一个“空行”。
在上图浏览器发出的请求报文中,第一行“GET /HTTP/1.1”即为请求行,后面的“host” “connection”等属于header,报文的最后是一个空白行,没有body。
请求行
请求报文的起始行即请求行,其简要地描述了客户端想要如何操作服务端的资源。
请求行的组成部分:
- 请求方法:GET/POST 表示对资源的请求。
- 请求目标:通常是一个URI,标记请求方法要操作的资源。
- 版本号:表示报文使用的HTTP协议版本。
上述三部分通常使用空格来分隔最后使用CRLF换行表示结束。
例如:GET / HTTP/1.1
状态行
服务器响应的状态
- 版本号:表示报文使用的HTTP协议版本
- 状态码:表示处理的结果
- 原因:作为数字状态码的补充,更详细的解释文字。
HTTP/1.1 200 OK
头部字段
请求行或者状态行再加上头部字段集合构成了HTTP报文里完整的请求头或者响应头。