第六章 HTTP首部字段
通用首部字段
1.Cache-Control
请求指令:(请求头里面带Cache-Control时的指令)
指令 | 参数 | 说明 |
no-cache | 无 | 强制向源服务器再次验证 |
no-store | 无 | 不缓存请求或响应的任何内容 |
max-age=[秒] | 必须 | Cache-Control:max-age=600 //600s即10分钟,则表示如果缓存超过10分钟需要再去去向服务器请求,未超过直接使用缓存 |
max-stale | 可省略 | 接收过期的响应。无参数值则客户端永远接收响应;设置参数值,则处于max-stale指定时间内,客户端也接收响应 |
min-fresh=[秒] | 必须 | min-fresh=60s 缓存在60s内过期,则不可作为响应返回 |
no-transform | 无 | 代理不可更改实体主体的媒体类型 |
only-if-cached | 无 | 从缓存获取资源。 缓存服务器不会向源服务器发请求。如果缓存服务器无资源,则返回504 |
cache-extension | - | 新指令标记 |
响应指令:(响应头里面带Cache-Control时的指令)
指令 | 参数 | 说明 |
public | 无 | 可向任意方提供响应的缓存 |
private | 可省略 | 仅向特定用户返回响应 |
no-cache | 可省略 | 缓存前必须确认资源有效性; no-cache:Location,如果no-cache指定了具体的参数值,location不能使用缓存 |
no-store | 无 | 不缓存请求或响应的任一部分 |
no-transform | 无 | 代理不可更改实体主体的媒体类型 |
must-revalidate | 无 | 缓存服务器必须再次向源服务器验证,如果无法联通源服务器,则返回504状态码 |
proxy-revalidate |
| 再次验证资源的有效性 |
max-age=[秒] | 必须 | Cache-Control:max-age=600 //600s即10分钟,10分钟内缓存服务器无需向服务器去确认 |
s-maxage=[秒] | 必须 | 与max-age功能相同,不同的是s-maxage只适用于供多位用户使用的公共缓存服务器 |
cache-extension | - | 新指令标记 |
2、Connection
| 参数 | 说明 |
Connection |
| 控制代理不再转发的首部字段 例如:Connection:Upgrade ,代理转发请求时会删除首部字段Upgrade再转发请求 |
Connection | Keep-Alive | 长连接,(http1.1默认都是长连接) 客户端发送Connection:Keep-Alive 服务器端会加上Keep-Alive字段返回响应,像这样: Keep-Alive:timeout=10,max=500 Connection:Keep-Alive |
| Close | 服务器端明确想断开连接 |
通用首部字段 | 参数 | 说明 |
Date | Tue,03 Jul 2014 04:40:59 GMT 这种日期时间格式 | 创建http报文的日期和时间 |
Pragma | no-cache | 1.0的向后兼容,不返回缓存的资源 和Cache-Control:no-cache的意思相同,为了兼容,通常会写成这样: Cache-Control:no-cache Pragma: no-cache |
Trailer |
| 报文主体后记录了哪些首部字段 |
Tranfer-Encoding | chunked/compress/deflate/gzip/identity | 传输报文主体时采用的编码方式 |
Upgrade | 例如:TLS/1.0 | 监测协议是否可使用更高版本 注:Upgrade首部字段产生的Upgrade对象仅限于客户端和临接服务器之间,所以使用时,要加上Connection:Upgrade 。(即再次转发时,删除Upgrade字段) |
Via |
| 追踪客户端与服务器之间报文的传输路径。报文在经过代理或网关时,会先在首部字段Via中附加该服务器的信息再进行转发 |
Warning | [警告码] [警告的主机:端口号] “[警告内容]” ([日期时间]) | 与缓存相关的警告 |
请求首部字段
请求首部字段 | 参数 | 说明 |
Accept | 例如: text/html,q=0.3,text/plain | 用户代理可处理的媒体类型和优先级 常见的媒体类型: 文本文件:text/html,text/plain, text/css … 图片:image/jpeg,image/png... 二进制文件: application/octet-stream |
Accept-Charset |
| 用户代理支持的字符集以及优先级 |
Accept-Encoding | gzip/deflate/compress等 | 用户代理支持的内容编码和优先级 |
Accept-Language | 例如:zh-cn,zh;q=0.7,en-us,en;q=0.3 | 用户代理能够处理的自然语言集合优先级 |
Authorization |
| 用户代理的认证信息 |
Expect | 例如100-continue | 用户代理期望的某种特定行为, 服务器无法理解改参数值而导致错误时,返回417 |
From |
| 用户的电子邮箱 |
Host |
| 主机名和端口号; http1.1规范内唯一一个必须包含的请求首部字段 |
If-Match | string类型 | If-Match === ETag时正常处理请求,否则返回412 |
If-Modified-Since | 日期格式 | 询问服务器该时间之后,所请求的资源是否更新,更新则返回新的资源,反之,返回304 他的值来源于服务器端返回的Last-Modified |
If-None-Match | string类型 | 与If-Match作用相反,当If-None-Match不等于ETag时,处理请求 |
If-Range | string类型 | If-Range的值与ETag或时间一致时,作为范围请求处理,否则返回全部资源 |
If-UnModified-Since | 日期格式 | 与If-Modified-Since作用相反,当资源未更新,处理请求,否则返回412 |
Max-Forwards | number类型 | 可经过的服务器的最大数目 |
Proxy-Authorization |
| 服务器认证所需信息 |
Range | 例如:bytes=5001-10000 | 范围资源请求 |
Referer | url,例如:http://www.hacke.jp/ | 请求是从哪个web页面发起的 |
TE | 例如:gzip,deflate;q=0.5 | 客户端能够处理的传输编码方式和相对优先级 |
User-Agent |
| 创建请求的浏览器和用户代理名称等信息 |
响应首部字段
响应首部字段 | 参数 | 说明 |
Accept-Ranges | bytes/none | 服务器端可处理范围请求/不可处理范围请求 |
Age=[秒] | number类型 | 源服务器在多久前建立了响应;如果是缓存服务器,则Age值为缓存服务器发起认证到认证完成的时间。 |
ETag |
| 实体唯一性标识。 强ETag:实体发生任何细微的改变都会更新ETag; 弱ETag: 资源发生根本改变时更新ETag |
Location |
| 引导访问某个与请求URI位置不同的资源, 该字段会3xx的响应,提供重定向的URI,几乎所有的浏览器在接收到包含Location的响应后,都会强制性的对已提示的重定向的资源进行访问。 |
Proxy-Authenticate |
| 把由代理服务器所要求的认证信息发给客户端(该认证发生在客户端与代理之间) |
Retry-After | number或者日期 | 告知客户端多久后再发请求,字段值可为日期时间或秒数。 主要配合503 和3xx一起使用 |
Server |
| 告知客户端当前服务器上安装的http服务器应用程序信息 |
Vary | 字段 | 例如:源服务器返回给代理服务器的首部字段包含Vary:Accept-Language ,则客户端请求中,Vary字段值为Accept-Lanuage时,代理服务器才返回响应,否则像源服务器发起请求 |
WWW-Authenticate |
| 用户http访问认证,告知客户端适用于访问请求URI所指定资源的认证方案。 |
实体首部字段
实体首部字段 | 参数 | 说明 |
Allow | HTTP的方法,例如GET,POST等 | 告知客户端能支持请求资源的所有的HTTP方法 |
Content-Encoding |
| 告知客户端服务器对实体的主体部分选用的内容编码方式 |
Content-Language |
| 告知客户端,实体主体使用的自然语言 |
Content-Length |
| 实体主体的大小,单位是字节 |
Content-Location | URI | 报文主体部分对应的URI |
Content-MD5 | 一串由MD5算法生成的值 | 检查报文主体在传输过程中是否保持完整 |
Content-Range | 例如:bytes 5001-10000/10000 | 返回的实体的哪个部分符合范围请求 |
Content-Type |
| 实体主体内对象的媒体类型 |
Expires | 日期类型 | 资源失效日期 |
Last-Modified | 日期类型 | 资源最后修改时间 精确到秒 |
Set-Cookie |
| 服务器端返回的Cookie |
Cookie |
| 客户端请求发送的Cookie |