HTTP协议请求和响应报文分析
请求报文
请求行:
Method:请求方法
GET 请求指定的页面信息,并返回实体主体。
HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE 请求服务器删除指定的页面。
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS 允许客户端查看服务器的性能。
TRACE 回显服务器收到的请求,主要用于测试或诊断。
URL:请求的页面地址,‘/’表示服务器的根目录
Version:版本
请求首部:
HOST:连接的目标主机
User-Agent:代理。浏览器类型和版本
Accept:请求的对象类型。‘/’表示任意类型
Accept-language:使用的语言种类
Accept-Encoding:使用的编码种类
Cache-Control:请求时的缓存指令
Pragma:防止页面被缓存
Connection:连接选项
空行:\r\n
请求正文:
响应报文
状态行:
版本
响应代码:
1**表示接收到请求,继续进程,在发送post后可以收到该应答。
2**表示请求的操作成功,在发送get后返回。
3**表示重发,为了完成操作必须进一步动作。
4**表示客户端出现错误。
5**表示服务器出现错误。
其余部分称为应答实体。
响应首部:
Date:消息发送的时间
Content-Type:指明发送给接收者的实体正文的媒体类型
Content-Length:指明实体正文的长度,以字节方式存储的十进制数字来表示
Transfer-Encoding:chunked 代表这个报文采用了分块编码。这时,报文中的实体需要改为用一系列分块来传输。每个分块包含十六进制的长度值和数据,长度值独占一行,长度不包括它结尾的CRLF(\r\n),也不包括分块数据结尾的 CRLF。最后一个分块长度值必须为 0,对应的分块数据没有内容,表示实体结束
Connection:连接选项
Expires:实体报头域给出响应过期的日期和时间
Server:响应报头域包含了服务器用来处理请求的软件信息。
Last-Modified:实体报头域用于指示资源的最后修改日期和时间
ETag:当用户再次请求该资源时,将在HTTP Request 中加入If-None-Match信息(ETag的值)。如果服务器验证资源的ETag没有改变(该资源没有更新),将返回一个304状态告诉客户端使用本地缓存文件。否则将返回200状态和新的资源和Etag. 使用这样的机制将提高网站的性能
Cache-Control:响应时的缓存指令
X-Host:
Content-Encoding:WEB服务器表明自己使用了什么压缩方法(gzip,deflate)压缩响应中的对象。
Age:假设该请求Date比当前时间要早,并且如果Date+Age(秒)与主请求url中的Date一致,那么可以认为从代理缓存服务器中获取资源,缓存命中。
空行:\r\n
响应正文: