6.1 HTTP报文头部
报文头部由几个字段构成
HTTP请求报文
由方法,URI,HTTP版本,HTTP头部字段等部分构成;
HTTP响应报文
由HTTP版本,状态码,HTTP头部字段构成
6.2 HTTP头部字段
HTTP头部字段结构
头部字段名: 字段值
4种HTTP头部字段类型
- 通用头部字段(General Header Fields)
请求报文和响应报文都会使用的头部 - 请求头部字段(Request Header Fields)
补充请求的附加内容、客户端信息、响应内容相关优先级等; - 响应头部字段(Response Header Fields)
补充响应的附加内容 - 实体首部字段(Entity Header Fields)
针对实体部分使用的头部;补充资源内容的更新事件等;
HTTP/1.1头部字段一览
6.3 HTTP/1.1通用头部字段
cache-control:操作缓存的工作机制
分为缓存请求指令 / 缓存响应指令
表示能否缓存的指令:
- public:(响应)表明其他用户也可以使用缓存;
- private:(响应)只对特定用户返回;
- no-cache:不缓存过期的资源
(请求)客户端不会接受缓存过的响应;
(响应)缓存前必须确定其有效性;如果对no-cache字段名具体指定参数值,客户端接收后就不能使用缓存
控制可执行缓存的对象的指令
- no-store:真正的不进行缓存,请求或响应中含机密信息;
指定缓存期限和认证的指令
- s-maxage:与max-age相同,区别于公共服务器
- max-age:必须有值,单位为秒;
(请求)判定资源缓存的时间比指定时间的数值小,客户端就接收缓存的资源;
(响应)数值代表资源保存为缓存的最长时间; - min-fresh:(请求)要求缓存服务器返回至少还未过指定时间的缓存资源,必须有值,单位为秒;
- max-stale:(请求)指示缓存资源,即使过期也照常接受,不指定数值无论过多久,客户端都会接受;置顶数职,即使过期,只要处于max-stale指定时间内,仍会被接收;
- only-if-cached:(请求)只从缓存获取资源,要求缓存服务器不重新加载响应,也不再次确认资源的有效性;
- must-revalidate:(响应)代理会向源服务器再次验证即将返回的响应缓存目前是否仍然有效;
- proxy-revalidate:(响应)要求缓存服务器接收到客户端带有该指令的请求返回响应之前,必须再次验证缓存的有效性;
- no-transform:(请求)(响应)代理不能改变实体的媒体类型
Cache-Control扩展
- cache-extension token:
Connection
Connection头部字段的作用:控制不再转发给代理的头部字段;管理持久连接;
GET / HTTP/1.1
Upgrade: HTTP/1.1
Connection: Upgrade
Connection: 不再转发的头部字段名
Connection: Keep-Alive
Connection: Close
Date
创建报文的日期和时间
Pragma:历史遗留字段
Pragma: no-cache
要求所有中间服务器不返回缓存的资源;
Trailer
说明在报文主体后记录了哪些首部字段。
Transfer-Encoding
HTTP/1.1中的传输编码方式仅对分块传输编码有效
Transfer-encoding: chunked
Upgrade
检测HTTP协议和其他协议是否可以使用更高的版本进行通信,其数值可以用来指定一个完全不同的通信协议;
Upgrade头部字段仅限于客户端和邻接服务器之间,因此,使用Upgrade还要额外制定Connection: Upgrade;
Via
追踪客户端和服务器哦之间的请求和响应报文的传输路径;
经过代理或网关时,会首先在头部字段Via中附加该服务器的信息,然后转发
Warning:告知用户一些缓存相关问题的警告
HTTP/1.1 警告码
警告码 | 警告内容 | 说明 |
---|---|---|
110 | Response is stale | 代理返回已过期的资源 |
111 | Revalidation failed | 代理验证资源有效性失败 |
112 | Disconnection operation | 代理与互联网连接被故意切断 |
113 | Heuristic expiration | 响应的使用期超过有效缓存的设定时间 |
199 | Miscellaneous warning | 任意的警告内容 |
214 | Transformation applied | 代理对内容编码或媒体类型执行了处理 |
299 | Miscellaneous persistent warning | 任意警告内容(持久) |
6.4 请求头部字段
Accept
通知服务器用户代理能处理的媒体类型及媒体类型的相对优先级,type/subtype,可以一次指定多种媒体类型;
Accept: text/html, application/xhtml+xml;q=0.9
一些媒体类型的例子
文本文件:
text/html,text/plain,text/css
application/xhtml+xml,application/xml
图片文件:
image/jpeg,image/gif,image/png
视频文件:
video/mpeg,video/quicktime
Accept-Charset
通知服务器用户代理支持的字符集和字符集相对优先级
Accept-Encoding
通知服务器用户代理支持的内容编码和内容编码的优先级;
几个内容编码的例子
gzip compress deflate
identify:不执行压缩或不会变化的默认编码样式
Accept-Language
告知服务器用户代理能够处理的自然语言集和优先级;
Authorization
通知服务器用户代理的认证信息(证书值)。通常,用户代理会在接受返回的401状态码响应后,把头部字段Authorization加入请求中;
Expect:告知服务器,期望出现的特定行为,HTTP/1.1只定义了一种
Expect: 100-continue
From
告知服务器使用用户代理的用户的电子邮件地址;例如显示搜索引擎等用户代理的负责人的邮件;
Host
HTTP/1.1规范中唯一一个必须被包含在请求内的头部字段;
告知服务器请求的资源所处的互联网主机名和端口号;因为单台服务器可能分配多个域名