请求报文
请求报文主要分为三部分,请求首行(request line), 请求头部(request header), 请求体(request body). 请求行与请求头部通过一个换行隔开,请求头部和请求体之间通过一个空行隔开.
请求首行
请求行由"请求方法"、"URL"和"HTTP协议版本"3个字段组成,之字段间用空格分隔.
响应报文
响应报文同样主要分为三部分,响应首行(request line), 响应头部(request header), 响应体(request body). 首行与响应头部通过一个换行隔开,响应头部和响应体之间通过一个空行隔开.
响应首行
响应首行一般由"协议版本"、"状态码"及其"描述信息"组成,之间以空格分割.
HTTP头部
http协议中,有 4 种类型的首部字段:通用首部字段、请求首部字段、响应首部字段和实体首部字段
通用首部字段:
既可以出现在请求报文中,也可以出现在响应报文中,它提供了与报文相关的最基本的信息
- Cache-Control:用于控制缓存的行为
- Connection:控制不再转发给代理的首部字段、管理持久连接
- Date:提供日期和时间标志,说明报文是什么时间创建的
- MIME-Version:给出了发送端使用的MIME版本
- Trailer:如果报文采用了分块传输编码方式,就可以用这个首部列出位于报文拖挂部分的首部集合
- Transfer-Encoding:报文主体的传输编码方式
- Update:给出升级为其他协议
- Via:显示了报文经过的中间节点(代理、网关)
- Pragma:报文指令
- Warning:错误通知
请求首部字段:
只在请求报文中有意义的头部,用于说明是谁或什么在发送请求、请求源自何处,或者客户端的喜好及能力
- Accept:告诉服务器能够发送哪些媒体类型
- Accept-Charset:告诉服务器能够发送哪些字符集
- Accept-Encoding:告诉服务器能够发送哪些编码方式
- Accept-Language:告诉服务器能够发送哪些语言
- Authorization:Web 认证信息,以便对其自身进行认证的数据
- Client-IP:提供了运行客户端的机器的IP地址
- Expect:列出某请求所要求的服务器行为
- From:提供了客户端用户的E-mail地址
- Host:请求资源所在服务器,给出服务器的主机名和端口号
- If-Match:与实体标记(ETag)作比较,如果实体标记与文档当前的实体标记相匹配,就获取这份文档
- If-None-Match:比较实体标记(与 If-Match 相反),如果提供的实体标记与当前文档的实体标记不相符,就获取文档
- If-Modified-Sinec:比较资源的更新时间(Last-Modified),除非在某个指定的日期之后资源被修改过,否则就限制这个请求
- If-Unmodified-Since:除非在某个指定日期之后资源没有被修改过,否则就限制这个请求
- Range:实体的字节范围请求,如果服务器支持范围请求,就请求资源的指定范围
- If-Range:资源未更新时发送实体 Byte 的范围请求,允许对文档的某个范围进行条件请求
- Referer:对请求中 URI 的原始获取方, 提供了包含当前请求URI的文档的URL
- UA-Color:提供了与客户端显示器的显示颜色有关的信息
- UA-CPU:给出了客户端CPU的类型或制造商
- UA-OS:给出了运行在客户端机器上的操作系统名称及版本
- UA-Pixels:HTTP 客户端程序的信息, 提供了客户端显示器的像素信息
- User-Agent:将发起请求的应用程序名称告知服务器
- TE:传输编码的优先级,告诉服务器可以使用那些扩展传输编码
- Cookie:客户端用它向服务器传送数据
- Cookie2:用来说明请求端支持的cookie版本
- Max-Forward:最大传输逐跳数,在通往源端服务器的路径上,将请求转发给其他代理或网关的最大次数
- Proxy-Authorization:代理服务器要求客户端的认证信息,这个首部在与代理进行认证时使用的
- Proxy-Connection:这个首部是在与代理建立连接时使用的
响应首部字段:
为客户端提供了一些额外信息,比如谁在发送响应、响应者的功能,甚至与响应相关的一些特殊指令
- Age:(从最初创建开始)响应持续时间
- Accept-Ranges:是否接受字节范围请求
- Public:服务器为其资源支持的请求方法列表
- Retry-After:如果资源不可用的话,在此日期或时间重试
- Server:服务器应用程序软件的名称和版本
- Title:对HTML文档来说,就是HTML文档的源端给出的标题
- Warning:比原因短语更详细一些的警告报文
- Vary:服务器会根据这些首部的内容挑选出最适合的资源版本发送给客户端
- Proxy-Authenticate:来自代理的对客户端的质询列表
- Set-Cookie:在客户端设置数据,以便服务器对客户端进行标识
- Set-Cookie2:与Set-Cookie类似
- WWW-Authenticate:来自服务器的对客户端的质询列表
实体首部字段:
描述主体的长度和内容,或者资源自身
- Allow:列出了可以对此实体执行的请求方法
- Location:告知客户端实体实际上位于何处,用于将接收端定向到资源的位置(URL)上去
- Content-Base:解析主体中的相对URL时使用的基础URL
- Content-Encoding:对主体执行的任意编码方式
- Content-Language:理解主体时最适宜使用的自然语言
- Content-Length:主体的长度
- Content-Location:资源实际所处的位置
- Content-MD5:主体的MD5校验和
- Content-Range:在整个资源中此实体表示的字节范围
- Content-Type:这个主体的对象类型
- ETag:与此实体相关的实体标记
- Expires:实体不再有效,要从原始的源端再次获取实体的日期和时间
- Last-Modified:这个实体最后一次被修改的日期和时间