标签:
HTTP报文是在HTTP程序之间发送的数据块,这些数据块以一些文本形式的元信息(meta-information)开头,描述了报文内容和含义。
HTTP使用流入(inbound)和流出(outbound)来描述事务处理(transaction)的方向。
HTTP报文由三部分组成:对报文进行描述的起始行(start line);包含属性的首部块(header);可选的,包含数据的,主体(Body)部分.起始行和首部就是由行分隔的ASCII文本,每行由回车换行(CRLF)序列作为结束。header和body之间以空行(仅有CRLF)分隔。
HTTP报文可以分两类:请求(request)报文和响应(response)报文。
请求报文的格式
<method> <request-URL> <verison>
<headers>
<entity-body>响应报文的格式
<verison> <status> <reason-phrase>
<headers>
<entity-body>格式说明
方法,客户端希望服务器对资源执行的动作。
请求的URL
HTTP协议的版本,格式为HTTP/<major>.<minor>
状态码,请求响应情况,成功,超时,失败等。
原因短语
实体的主体部分,包含一个由任意数据组成的数据块。可以不包含实体。
<method>| 方法 | 是否包含主体 | 描述 |
|---|---|---|
| GET | 否 | 获取指定的资源 |
| HEAD | 否 | 只从服务器获取文档的头部 |
| POST | 是 | 向服务器发送需要处理的数据(Html表单) |
| PUT | 是 | 将请求的主体部分存储到服务器上 |
| TRACE | 否 | 对可能经过代理的报文进行跟踪 |
| OPTIONS | 否 | 请求服务器告知其支持的各种功能 |
| DELETE | 否 | 删除指定的资源 |
| LOCK | 锁定服务器资源 | |
| MKCOL | 在服务器上创建资源 | |
| COPY | 在服务器上复制资源 | |
| MOVE | 在服务器上移动资源 |
| 范围 | 已定义范围 | 分类 |
|---|---|---|
| 100-199 | 100-101 | 信息提示 |
| 200-299 | 200-206 | 成功 |
| 300-399 | 300-305 | 重定向 |
| 400-499 | 400-415 | 客户端错误 |
| 500-599 | 500-505 | 服务器错误 |
其中具体的状态码详细说明如下:
<headers> 首部首部分为5类:
客户端和服务器端都可以使用的首部,提供了与报文相关的最基本的信息。
通用的信息性首部如下:
通用缓存性首部如下:
请求报文特有的,用于说明客户端发送出来的请求相关信息
请求信息性首部如下:
| 首部 | 描述 |
|---|---|
| Client-IP | 客户端的IP |
| From | 客户端用户的email地址 |
| Host | 接收请求的服务器ip和port |
| Referer | 提供了包含当前请求URI的文档的URL |
| UA-Color | 客户端显示器显示颜色有关信息 |
| UA-CPU | 客户端CPU类型或制造商 |
| UA-Disp | 与客户端屏幕显示能力相关信息 |
| UA-OS | 客户端操作系统名称以及版本 |
| UA-Pixels | 客户端显示器像素信息 |
| User-Agent | 发起请求的应用程序名称 |
Accept首部
Accept首部为客户端提供了一种将其喜好和能力告知服务器的能力。服务器可以根据这些信息,发送相应的信息给客户端。
| 首部 | 描述 |
|---|---|
| Accept | 告诉服务器能够发送哪些媒体类型 |
| Accept-Charset | 告诉服务器能够发送哪些字符集 |
| Accept-Encoding | 告诉服务器能发哪些编码方式 |
| Accept-Language | 告诉服务器能发送哪些语言 |
| TE | 告诉服务器可以使用哪些扩展传输编码 |
条件请求首部
客户端在请求时若希望为请求加上限制,则使用以下:
| 首部 | 描述 |
|---|---|
| Expext | 允许客户端列出某请求所要求的服务器行为 |
| If-Match | 获取与此处实体标记相匹配的资源 |
| If-Modified-Since | 获取此处指定日期之后被修改的资源 |
| If-None-Match | 和If-Match相反,获取与此处标记不匹配的资源 |
| If-Range | 允许对资源的指定范围进行条件请求 |
| If-Unmodified-Since | 与If-Modified-Since相反,获取此处指定日期之后未被修改的资源 |
| Range | 请求资源的指定范围 |
安全请求首部
HTTP本身支持简单的安全请求,可以读请求进行质询/响应认证。要求客户端在获取特定资源前,首先对自身进行认证,包括以下部分:
| 首部 | 描述 |
|---|---|
| Authorization | 客户端提供给服务器,以便其对自身进行认证的数据 |
| Cookie | 客户端向服务器传送一个令牌 |
| Cookie2 | 用来说明请求端支持的cookie版本 |
代理请求首部
| 首部 | 描述 |
|---|---|
| Max-Forward | 在通往源端服务器的路径上,将请求转发给代理或网关的最大次数,与TRACE一起使用 |
| Proxy-Authorization | 与Authotrization类似,在代理认证时使用 |
| Proxy-Connection | 与Connection类似,用于与代理建立连接时。 |
信息性首部
| 首部 | 描述 |
|---|---|
| Age | (从最初创建开始)响应持续时间 |
| Public | 服务器为其资源支持的请求方法列表 |
| Retry-After | 若资源不可用,在此时间重试 |
| Server | 服务器应用程序软件版本和名称 |
| Title | HTML文档源端给出的标题 |
| Warning | 比原因短语中更详细的一些警告报文 |
协议首部
| 首部 | 描述 |
|---|---|
| Accept-Ranges | 服务器可接受的资源范围类型 |
| Vary | 首部列表 |
安全响应首部
| 首部 | 描述 |
|---|---|
| Proxy-Authenticate | 来自代理的对客户端的质询列表 |
| Set-Cookie | 客户端设置一个令牌,以便服务器对客户端进行标识 |
| Set-Cookie2 | |
| WWW-Authenticate | 来自服务器对客户端的咨询列表 |
用于应对实体主体部分的首部
实体信息性首部
| 首部 | 描述 |
|---|---|
| Allow | 列出了对此实体执行的请求方法 |
| Location | 告知客户端实体实际位于何处 |
内容首部
| 首部 | 描述 |
|---|---|
| Content-Base | 解析主体中的相对URL时使用的基础URL |
| Content-Encoding | 对主体执行的编码方式 |
| Content-Language | 主体的自然语言 |
| Content-Length | 主体的长度 |
| Content-Location | 资源实际位置 |
| Content-MD5 | 主体的MD5校验和 |
| Content-Range | 整个资源中此实体 |
| Content-Type | 主体的对象类型 |
实体缓存首部
| 首部 | 描述 |
|---|---|
| ETag | 与此实体相关的实体标记 |
| Expires | 实体不在有效 |
| Last-Modified | 实体最后修改时间 |
标签:
原文地址:http://blog.csdn.net/felix_wangq/article/details/51883181