Http的报文结构及内容
Http的报文分为两种:请求报文,响应报文。
请求报文包含头部和请求行,部分请求报文包含主体。
响应报文包含头部和状态行,部分响应报文包含主体。
头部包含通用头部,请求头部,响应头部,实体头部。
请求报文只能包含通用头部,请求头部和实体头部。
响应报文只能包含通用头部,响应头部和实体头部。
请求行:请求类型,URL,HTTP版本。
状态行:HTTP版本,状态码,状态短语。
请求类型包括:
GET: 向服务器请求文档。
POST: 从客户端向服务器发送信息。
PUT: 从服务器向客户端发送文档。
HEAD: 请求关于文档信息,而不是文档本身。
TRACE: 回显输入的请求。
CONNECT: 预留。
OPTION: 询问有关可用的选项。
HTTP版本:目前常用版本为1.1。
http1.0版本与http1.1版本最大的区别就是在于持续连接与非持续连接。http在版本1.1之前定义了非持续连接,而在版本1.1中默认的是持续连接。
非持续连接:每一次请求/相应都要建立TCP链接。在这种策略中,对于N个不同文件的不同图片,链接必须建立和关闭N次。因为服务器需要N个不同的缓冲区,并且每次建立一个连接时,需要一个较慢的启动过程,所以非持续链接在服务器端增加了很大的开销。
持续连接:在持续连接中,服务器在发送响应后会保持连接处于开启状态,以等待更多的请求。如果客户端请求关闭或者超时时,服务器则会关闭连接。
状态码、状态短语:
代码 | 短语 | 描述 |
---|---|---|
提供信息 | ||
100 | Continue | 请求的初始部分已经收到,客户端可以继续他的请求 |
101 | Switching | 服务器同一客户的请求,切换到更新头部所定义的协议 |
成功 | ||
200 | OK | 请求成功 |
201 | Created | 创建了一个新的URL |
202 | Accepted | 请求已经接受,但他不能立即响应 |
204 | No content | 主体中没有内容 |
重定向 | ||
301 | Moved permanently | 服务器已不再使用所请求的URL |
302 | Moved temporarily | 请求的URL已经暂时移开 |
304 | Not modified | 文档还没有被修改 |
客户端错误 | ||
400 | Bad request | 在请求中有语法错误 |
401 | Unauthorized | 请求缺乏合适的授权 |
403 | Forbidden | 服务被拒绝 |
404 | Not found | 没有找到文档 |
405 | Method not allowed | URL不支持该方法 |
406 | Not accept able | 不接受这种格式的请求 |
服务器错误 | ||
500 | Internaluserver error | 服务器有错误,例如系统崩溃 |
501 | Not implemented | 请求的动作不能完成 |
503 | Service unavailable | 服务暂时不可用,但将来可以被再次请求 |