标签:
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