【HTTP】HTTP报文首部之通用首部详解
这篇文章,单独来讲讲HTTP/1.1通用首部字段的内容:
控制缓存的行为,可用于请求及响应时.
缓存请求指令:
指令 | 参数 | 说明 |
---|---|---|
no-cache | 无 | 强制向源服务器再次验证 |
no-store | 无 | 使用该指令时,暗示请求中包含机密信息.故该指令规定缓存不能在本地存储请求的任一部分 |
max-age=[秒] | 必须 | 响应的最大Age值 |
max-stale(=[秒]) | 可省略 | 可指示缓存资源,如果指令未指定参数值,无论过多久,都会接收响应;若指定了具体数值,即使过期,只要仍处于max-stale指定的时间内,仍旧会被客户端接收 |
min-fresh=[秒] | 必须 | 期望在指定时间内的响应仍有效 |
no-transform | 无 | 代理不可更改媒体类型 |
only-if-cached | 无 | 该指令要求缓存服务器不重新加载效应,也不会再次确认资源有效性.若发生请求缓存服务器的本地缓存无响应,则会返回状态码504 Gateway Time-out |
cache-extension | - | 新指令标记(token) |
缓存响应指令:
指令 | 参数 | 说明 |
---|---|---|
public | 无 | 可向任意方提供响应的缓存 |
private | 可省略 | 仅向特定用户返回响应 |
no-cache | 无 | 缓存前必须先确认其有效性 |
no-store | 无 | 使用该指令时,暗示响应中包含机密信息.故该指令规定缓存不能在本地存储响应的任一部分 |
no-transform | 无 | 代理不可更改媒体类型 |
must-revalidate | 无 | 代理会向源服务器再次验证即将返回的响应缓存目前是否仍然有效,若代理无法连接源服务器再次获取有效资源时,缓存必须给客户端一条504状态码 |
proxy-revalidate | 无 | 中间缓存服务器对缓存的响应有效性再进行确认 |
max-age=[秒] | 必须 | 响应的最大Age值 |
s-maxage=[秒] | 必须 | 公共缓存服务器响应的最大Age值.只适用于供多位用户使用的公共缓存服务器,对于向同一用户重复返回响应的服务器来说,这个指令没有任何作用 |
cache-extension | - | 新指令标记(token) |
控制不再转发给代理的首部字段:
用法:Connection:不再转发的首部字段名
表明创建HTTP报文的日期和时间
HTTP/1.1之前版本的历史遗留字段,仅作为与HTTP/1.0的向后兼容定义
用法:Pragma:no-cache
该首部字段属于通用首部字段,但只用在客户端发送的请求中.所有的中间服务器如果都能以HTTP/1.1为基准,直接采用Cache-Control:no-cache即可,但是不现实,所以发送的请求中会同时含有以下两个首部字段:Cache-Control:no-cache和Pragma:no-cache
事先说明在报文主体后记录了哪儿些首部字段.可应用在HTTP/1.1版本分块传输编码时
规定了传输报文主体时采用的编码方式,仅对分块传输编码有效
用于检测HTTP协议及其他协议是否可使用更高的版本进行通信
追踪客户端与服务器之间的请求和响应报文的传输路径
通常告知用户一些与缓存相关问题的警告.格式如下:
Warning: [警告码] [警告的主机:端口号] “[警告内容]” ([日期时间])
HTTP/1.1警告码具体如下:
警告码 | 警告内容 | 说明 |
---|---|---|
110 | Response is stale(响应已过期) | 代理返回已过期的资源 |
111 | Revalidation failed(再验证失败) | 代理再验证资源有效性时失败(服务器无法到达等原因) |
112 | Disconnection operation(断开连接操作) | 代理与互联网连接被故意切断 |
113 | Heuristic expiration(试探性过期) | 响应的使用期超过24小时(有效缓存的设定时间大于24小时情况下) |
199 | Miscellaneous warning(杂项警告) | 任意的警告内容 |
214 | Transformation applied(使用了转换) | 代理对内容编码或媒体类型等执行了某些处理时 |
299 | Miscellaneous persistent warning(持久杂项警告) | 任意的警告内容 |
HTTP报文首部之通用首部详解到此结束,感谢您的阅读~
最后,祝每一位改变世界的程序员,节日快乐~