Http报文
Http是因特网的信使,报文则是信使用来装信的包裹。
报文向下游流动
所有的报文(请求报文、响应报文)都会向下游流动。所有的报文发送者都在接受者的上游。
报文的组成部分
报文由: 起始行(对报文进行描述)、首部(包含属性)、主体(数据的载体,可以包含二进制数据也可以为空)组成。
起始行 | HTTP/1.0 200 OK |
---|---|
首部 | Content-type:text/plain Content-length: 19 |
主体 | Hi! I’m a message! |
起始行
所有的Http报文都已一个起始行开始
请求报文的起始行说明了要做些什么;
相应报文的起始行说明发生了什么;
请求行
请求报文的起始行称为请求行。
请求行包含了一个方法和一个请求URL:
方法描述了服务器应该执行的操作;
请求URL描述了要对哪个资源执行这个方法
请求行还包括Http版本,用来告知服务器,客户端使用的是哪种Http。所用的字段都有空格符分隔。
响应行
响应报文的起始行称为响应行,它承载了状态信息的操作产生的所有结果,包含响应报文使用的Http版本、数字状态码以及描述操作状态的文本形式的原因短语。
所有的字段由空格符分隔。
常用的Http方法
方法 | 描述 | 是否包含主体 |
GET | 从服务器获取一份文档 | no |
HEAD | 只从服务器获取文档的首部 | no |
POST | 向服务器发送需要处理的数据 | yes |
PUT | 将请求的主体部分存储在服务器上 | yes |
TRACE | 对可能经过代理服务器传送到服务器上的报文进行追踪 | no |
OPTIONS | 决定可以在服务器上执行哪些方法 | no |
DELETE | 从服务器上删除一份文档 | no |
状态码
方法是用来告诉服务器做了什么,状态码是来告诉客户端发生了什么事情。
状态码位于响应的起始行,如:HTTP/1.0 200 OK 中200就是状态码。
100~199 | 表示状态码 |
200~299 | 表示成功 |
300~399 | 表示资源已经被移走了(重定向) |
400~499 | 表示客户端的请求出错了 |
500~599 | 表示服务器出错了 |