fiddler请求报文的headers属性详解
headers的属性包含以下几部分。
(1)Cache头域
在Cache头域中,通常会出现以下属性。
1. Cache-Control
用来指定Response-Request遵循的缓存机制。各个指令如下含义。
- Cache-Control:Public:可以被任何缓存所缓存。
- Cache-Control:Private:指示响应信息的全部或部分用于单个用户,而不能用一个共享缓存来缓存。这可以让源服务器指示,响应的特定部分只用于一个用户,而对其他用户的请求则是一个不可靠的响应。
- Cache-Control:no-cache:所有的内容都不会被缓存,请求头里的no-cache表示浏览器不想读缓存,并不是说没有缓存。一般在浏览器按Ctrl+F5键强制刷新时,请求头里也会有这个no-cache,也就是跳过强缓存和协商缓存阶段,直接请求服务器。
- Cache-Control:max-age=0:指示客户端愿意接收其绝对时间不大于指定的时间,以秒计。如果直接按F5键的话,请求头是max-age=0,只跳过强缓存,但进行协商缓存。
2. If-Modified-Since
- 把浏览器端缓存页面的最后修改时间发送到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行对比。如果时间一致,那么会返回304,客户端就直接使用本地缓存文件。如果时间不一致,就会返回200和新的文件内容。客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示在浏览器中。
本地文件的修改时间和服务器上的文件时间修改时间一致,说明文件没有被更新。HTTP服务器返回304,告诉客户端使用本地缓存文件
3. If-None-Match
- If-None-Match和ETag一起工作,工作原理是在HTTPresponse中添加ETag信息。当用户再次请求该资源时,将在HTTP request中假如 If-None-Match信息(ETag的值)。如果服务器验证资源的ETag没有改变(该资源没有更新),将返回200状态和新的资源和ETag。使用这样的机制将提高网站的性能
** If-None-Match和ETag的值一致,说明文件没有被更新。服务器将返回304,告诉客户端使用本地缓存文件**
4. Pragma
- 防止页面被缓存,在HTTP/1.1版本中,它和Cache-Control:no-cache的作用一模一样。
Prama只有一个用法,例如,Pragma:no-cache。
(2)Client头域
1. Accept
浏览器端可以接收的媒体类型。
-
Accept: text/html
代表浏览器可以接收服务器发回的类型为text/html也就是我们常说的HTML文档,如果服务器无法返回text/html类型的数据,服务器应该返回一个406错误(non acceptable)。 -
Accept: */ *
通配符 * 代表任意类型。代表浏览器可以处理所有类型 -
Accept-Encoding
浏览器声明自己接收的语言。语言跟字符集的区别是:中文是语言,中文有多种字符集,如何big5、gb2312、gbk等
2. User-Agent
- 告诉HTTP服务器客户端使用的操作系统和浏览器的名称和版本。我们上网登陆论坛的时候,往往会看到一些欢迎信息,其中列出了你的操作系统的名字和版本、你所使用的浏览器的名称和版本,这往往让很多人感到很神奇,实际上,服务器应用程序就是从User-Agent这个请求报头域中获取到的这些信息。User-Agent请求报头域允许客户端将它的操作系统、浏览器和其他属性告诉服务器。
3. Accept-Charset
- 浏览器声明自己接收的字符集,如gb2312、utg-8等。
(3) Cookie头域
- Cookie
最重要的header,将Cookie的值发送给HTTP服务器。
(4) Miscellaneous头域
- Referer
- 提供了request的上下文信息的服务器,告诉服务器我是从哪个链接过来的。有些统计数据需要用到此头域。比如从我的主页上链接到统计服务器那里,该服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。
(5) Entity头域
1. Content-Length
- 发送给HTTP服务器数据的长度。
2. Content-Type
- 表示具体请求中的媒体类型信息。
常见的媒体格式类型如下。 - text/html: HTML格式
- text/plain: 纯文本格式
- text/xml: XML格式
- image/gif: gif图片格式
- image/jpeg: jpg图片格式
- image/png: png图片格式
以application开头的媒体格式类型如下 - application/xhtml+xml: XHTML格式
- application/xml: XML数据格式
- application/atom+xml: Atom XML聚合格式
- application/json: JSON数据格式
- application/pdf: pdf格式
- application/msword: Word文档格式
- application/octet-stream: 二进制流数据
- application/x-www-form-urlencoded: <form encType="">中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)。
3. multipart/form-data
- 另外一种常见的媒体格式是上传文件之时使用的。
- 需要在表单中进行文件上传时,就需要使用该格式。
(6)Tranport头域
Connection
- Connection: keep-alive: 当一个网页打开完成后,客户端和服务器之间用户传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。
- Connection: close: 代表一个request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭,当客户端再次发送request时,需要重新建立TCP连接。
Host(发送请求时,该报头域是必须的) - 请求报头域主要用于指定被请求资源的Internet主机和端口号。它通常从HTTP URL中提取出来。