Host: (必须的) 当一台计算机托管了多个虚拟主机,IP一样,域名不一样,根据Host字段。
User-Agent:描述发起客户端的信息,以便服务器返回适合此浏览器或者系统的信息。
Date: 创建的时间。
Server: 返回服务器的信息。(不是必要出现,会把服务器信息暴露出来,可能受到攻击) 。
Content-Length:报文里请求体的长度。
------ 编码、语言、压缩相关的
Accept/Content-Type: 客户端希望接受的类型 / 服务器发送的类型。
Accept-Encoding/Content-Encoding:客户期望的压缩格式 / 服务器返回的压缩格式
gzip:最流行的
deflate:
br:专门为HTTP优化的压缩算法
Accept-Language/Content-Language:客户期望的语言类型 / 服务器返回的语言类型。
Accept-Charset:期望的字符集 ,但服务器没有Content-Charset,会在Content-Type:charset=xxx表示
(以上Accept请求的时候,可以用q=?来表示优先级)
Vary:服务器来记录一些参考哪些字段信息的。在代理服务器中用到。比如A、B两个不同的浏览器,请求同一个资源,在缓存服务器中存着2个不同浏览器版本的,Vary来区分。
---------分块传输
Transfer-Encoding:chunked:与Content-Length互斥。
---------范围请求
Range:bytes=x-y 请求数据范围。
Accept-Ranges:bytes/none 服务器告诉浏览器支不支持范围请求。
服务器收到Ranges后,判断,超出范围416,正常返回206(表示部分资源)
Content-Ranges:bytes 0-10/100 服务器返回信息。
--------
Connection:keep-alive/close
Location:重定向字段
Cookie/Set-Cookie:存放一些服务器委托在浏览器里面的数据。
Expires:绝对时间,一个截止日期
Max-Age:多少秒
Domain:指定Cookie域名
Path:指定Cookie路径
HttpOnly:只能在Http请求中获取Cookie
SameSite:Strict
Lax
None
Secure:Cookie只能用Https加密传输
Cache-Control:缓存的相关字段
max-age:多少秒,从响应报文创建开始算起(比Cookie短)
s-maxage:代理服务器上存在的时间
private:客户端缓存
public:客户端和代理服务器都可以缓存
no-store:不允许缓存
no-cache:使用之前必须询问服务器
must-revalidate:缓存没过期,直接使用,过期了,访问服务器
proxy-revalidate:代理上面缓存过去,去访问服务器
no-transform:不允许代理服务器上更改数据
max-stale=x:当前 < x+缓存期
min-fresh=y:当前+y < 缓存期
only-if-cached:只接受代理服务器上的数据,不接受源服务器上的。代理过期或没有,504
Expires:绝对时间。
Last-modified:最后缓存时间
If-Modified-Since:
ETag:资源的唯一标识。第一次响应报文返回。
强:必须完全符合
弱:在值的前面加上'W/',语义没变化就行
If-None-Match:获取ETag的值,向服务器发送
输入URL地址,使用缓存
刷新 在请求头里面加入 Cache-Control: max-age=0 返回最新的资源
ctrl+f5(强制刷新) 删除缓存,重新请求完整的资源