http响应报文
HTTP响应报文格式
status-line 格式为:HTTP版本号 response-code response-phrase
headers<0个或多个>
<blank line>
body
响应头 status-line部分
使用tcpdump截取下来的一段报文
E..%..@.'..&.w..
.....P..H]M9..N.
...z...........6
.T..HTTP/1.1.304
.Not.Modified..D
ate:.Sat,.07.Nov
.2015.09:22:57.G
MT..Server:.Apac
he/2.4.6.(CentOS
).OpenSSL/1.0.1e
-fips.PHP/5.4.16
.mod_perl/2.0.9d
ev.Perl/v5.16.3.
.Connection:.Kee
p-Alive..Keep-Al
ive:.timeout=5,.
max=100..ETag:."
7e-523ede518b4e4
另一个响应报文
E....U@.........
.....P...Pk.....
....y........l..
.j..HTTP/1.1.200
.OK..Cache-Contr
ol:.private..Con
tent-Type:.text/
html;.charset=ut
f-8..Content-Enc
oding:.gzip..Var
y:.Accept-Encodi
ng..Server:.Micr
osoft-IIS/8.5..X
-AspNet-Version:
.4.0.30319..X-Po
wered-By:.ASP.NE
T..Date:.Sat,.07
.Nov.2015.10:58:
35.GMT..Content-
Length:.8413....
.............`.I
.%&/m.{.J.J..t..
.`.$..@.........
iG#).*..eVe]f.@.
.....{....{....;
.N'...?\fd.l..J.
..!....?~|.?"~..
7N...O.<y...<M..
.<...[.nQ...>...
....WWW..{......
.......#j.x.g...
以此来分析
响应报文头部的第一行叫状态行,以HTTP版本号开始,后面三位数字为响应代码,接着是易读的响应短语
状态行:HTTP/1.1.304.Not.Modified
响应码如下 详见:这里
1 1xx消息
2 2xx成功
3 3xx重定向
4 4xx客户端错误
5 5xx服务器错误
之后是首部字段 使用空行将所有首部字段跟报文主体分割开来 格式:字段名: 空格 字段值
首部字段如下
通用首部字段
首部字段名 说明
CacheControl 控制缓存的行为
Connection 允许客户端和服务器指定与请求/响应连接有关的选项
Date 报文创建时间
Progma 报文指令
Trailer 报文末端的首部一览
Transfer-Encoding 指定报文主体的传输编码方式
Upgrade 升级为其它协议
Via 代理服务器的相关信息
Warning 错误通知
响应首部字段
首部字段名 说明
Accept-Ranges 是否接受字节范围请求
Age 推算资源创建经过时间
Etag 资源的匹配信息
Location 令客户端重定向至指定URI
Proxy-Authenticate 代理服务器对客户端的认证信息
Retry-After 对再次发起请求的时机要求
Server HTTP服务器的安装信息
Vary 代理服务器缓存的管理信息
WWW-Authenticate 服务器对客户端的认证信息
实体首部字段
首部字段名 说明
Allow 资源可支持的HTTP方法
Content-Encoding 实体主体适用的编码方式
Content-Language 实体主体的自然语言
Content-Length 实体主体的大小
Content-Location 替代对应资源的URI
Content-MD5 实体主体的报文摘要
Content-Range 实体主体的位置范围
Content-Type 实体主体的媒体类型
Expires 实体主体过期的日期时间
Last-Modified 资源的最后修改日期时间
请求首部字段
首部字段名 说明
Accept 用户代理可处理的媒体类型
Accept-Charset 优先的字符集
Content-Encoding 优先的内容编码
Content-Language 优先的语言
Authorization Web认证信息
Expect 期待服务器的特定行为
From 用户的电子邮箱地址
Host 请求资源所在服务器
If-Match 比较实体标记(ETag)
If-Modified-Since 比较资源的更新时间
If-None-Match 比较实体标记(与If-Match相反)
If-Range 资源未更新时发送实体Byte的范围请求
If-Unmodified-Since 比较资源的更新时间(与If-Modified-Since相反)
Max-Forwards 最大传输逐跳数
Proxy-Authorization 代理服务器要求客户端的认证信息
Range 实体的字节范围请求
Referer 对请求中URI的原始获取方
TE 传输编码的优先级
User-Agent HTTP客户端程序的信息
一个回车换行\r\n分割开首部和body