# 第四章 HTTP 报文头
HTTP 首部字段根据实际用途进行区分,被分为以下四种类型
# 通用头字段
# Date
Date
是一个通用首部,其中包含了报文创建的日期和时间
Headers Date MDN (opens new window)
Date: Wed, 18 Aug 2021 08:29:43 GMT
# Connection
Connection
决定当前的事务完成后,是否会关闭网络连接。如果该值是“keep-alive”,网络连接就是持久的,不会关闭,使得对同一个服务器的请求可以继续在该连接上完成。
Headers Connection MDN (opens new window)
Connection: keep-alive
Connection: close
# Upgrade
Upgrade
用于检测 HTTP 协议及其他协议是否可用更高的版本
Status Code: 101 Switching Protocols
Connection: Upgrade
Upgrade: websocket
# 请求头字段
# User-Agent
首部字段User-Agent
告知服务器创建请求的浏览器和用户代理名称等信息
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36
# Accept
Accept
请求头用来告知(服务器)客户端可以处理的内容类型,这种内容类型用 MIME 类型来表示。
此外还有Accept-Chartset
,Accept-Encoding
,Accept-Language
Headers Accept MDN (opens new window)
accept: text/html,application/xhtml+xml,application/xml;
q=0.9,image/avif,image/webp,image/apng,*/*;
q=0.8,application/signed-exchange;
v=b3;
q=0.9
accept-encoding: gzip, deflate, br
accept-language: zh-CN,zh;q=0.9,la;q=0.8,zh-TW;q=0.7,en;q=0.6,so;q=0.5
# Range
如果下载中遇到网络中断的情况,那就必须重新开始下载,为了解决这个问题,需要一种可恢复的机制。所谓恢复是指能从之前下载中断处恢复下载。要实现该功能需要指定下载的实体范围。
对于只需获取部分资源的范围请求,包含首部字段Range
即可告知服务器资源的指定范围。常见于较大文件下载的场景
请求头举例
Range: bytes=5001-10000
Range: bytes=5001-
Range: bytes=-3000,5000-7000
响应头举例
Content-Range: bytes 5001-10000/10000
# Host
首部字段Host
告知服务器请求的资源速出的互联网主机名和端口号
Host: www.webdevelop.cn
# Referer
首部字段Referer
告知服务器请求的原始资源的 URI
Referer: http://www.webdevelop.cn/Basic/HTTP/06/
# 响应头字段
# Expire
设置到期时间
# Cache-Control
Cache-Control
通用消息头字段,被用于在 http 请求和响应中,通过指定指令来实现缓存机制。
Headers Cache-Control MDN (opens new window)
指令 | 参数 | 说明 |
---|---|---|
public | 无 | 以被任何对象缓存 |
private | 无 | 代理服务器不能缓存 |
no-cache | 无 | 协商缓存 |
no-store | 无 | 完全不缓存 |
max-age | <seconds> | 设置缓存存储的最大周期 |
max-stale | <seconds> | 设置缓存允许的过时时间 |
协商缓存:在发布缓存副本之前,强制要求缓存把请求提交给原始服务器进行验证,说白话,先检查一次缓存是不是最新的,不是就从原始服务器重新下载。
注意
从字面意思上看,很容易认为 no-cache 误解为不缓存,实际上是协商缓存,no-store 才是真正的不进行缓存
cache-control: max-age=31536000, public
# Last-Modified
# ETag
# 实体描述字段
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 379
Content-Type: text/html
# 其他
字段 | 说明 |
---|---|
Pragma | 历史遗留,现在使用 Cache-Control |
Transfer-Encoding | 规定分块传输的编码方式 |
Via | 追踪请求的传输路径 |
Warning | 警告,大多与缓存相关 |
pragma: no-cache
via: 1.1 3aa2c5d8509af94e91f2680cf10da532.cloudfront.net (CloudFront)