HTTP消息头

1. 关于HTTP消息头

HTTP消息头是在,客户端请求(Request)或服务器响应(Response)时传递的,位请求或响应的第一行,HTTP消息体(请求或响应的内容)是其后传输。HTTP消息头,以明文的字符串格式传送,以冒号分隔的键/值对,如:Accept-Charset: utf-8,每一个消息头最后以回车符(CR)和换行符(LF)结尾。

2. 常用的HTTP请求头

协议头 说明
Accept 浏览器可接受的MIME类型(Content-Types) text/plain
Accept-Charset 可接受的字符集 utf-8
Accept-Encoding 可接受的响应内容的编码方式 gzip, deflate
Accept-Language 可接受的响应内容语言列表 en-US
Cache-Control 用来指定当前的请求/回复中的,是否使用缓存机制 no-cache
Connection 客户端(浏览器)想要优先使用的连接类型 keep-alive Upgrade
Cookie 由之前服务器通过Set-Cookie(见下文)设置的一个HTTP协议Cookie Cookie: $Version=1; Skin=new;
Content-Type 请求体的MIME类型 (用于POST和PUT请求中) pplication/x-www-form-urlencoded
Upgrade 要求服务器升级到一个高版本协议 HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11

3. 常用的HTTP响应头

协议头 说明
Age 响应对象在代理缓存中存在的时间,以秒为单位 Age: 12
Cache-Control 通知从服务器到客户端内的所有缓存机制,表示它们是否可以缓存这个对象及缓存有效时间。其单位为秒 Cache-Control: max-age=3600
Expires 指定一个日期/时间,超过该时间则认为此回应已经过期 Expires: Thu, 01 Dec 1994 16:00:00 GMT
Content-Language 响就内容所使用的语言 Content-Language: zh-cn
Content-Type 当前内容的MIME类型 Content-Type: text/html; charset=utf-8
Expires 指定一个日期/时间,超过该时间则认为此回应已经过期 Expires: Thu, 01 Dec 1994 16:00:00 GMT

4. HTTP协议头Cache-Control

Expires和Cache-Control就是服务端用来约定和客户端的有效时间的,但是如果同时存在,则被Cache-Control的max-age覆盖。

Cache-directive| 描述|存储策略|过期策略|请求字段
----|------|----
public|可被任何缓存区缓存|✔️||
private|资源仅被客户端缓存, 代理服务器不缓存|✔️||
no-cache|请求和响应消息不能缓存,相当于max-age:0,must-revalidate即资源被缓存, 但是缓存立刻过期, 同时下次访问时强制验证资源有效性|✔️|✔️|✔️
no-store|请求和响应都不缓存|✔️||✔️
max-age|缓存资源, 但是在指定时间(单位为秒)后缓存过期|✔️|✔️|✔️

5.http header中与缓存有关的key

key| 描述| 存储策略|过期策略|协商策略
----|------|----
Cache-Control|指定缓存机制,覆盖其它设置|✔️|✔️|
Pragma|http1.0字段,指定缓存机制|✔️||
Expires|http1.0字段,指定缓存的过期时间||✔️|
Last-Modified|资源最后一次的修改时间|||✔️
ETag|唯一标识请求资源的字符串|||✔️

下面我们来看下各个头域(key)的作用.

Cache-Control
浏览器缓存里, Cache-Control是金字塔顶尖的规则, 它藐视一切其他设置, 只要其他设置与其抵触, 一律覆盖之.不仅如此, 它还是一个复合规则, 包含多种值, 横跨 存储策略, 过期策略 两种, 同时在请求头和响应头都可设置.
语法为: "Cache-Control : cache-directive".

你可能感兴趣的:(HTTP消息头)