一份紧凑、非穷尽的参考表,汇总各篇笔记反复出现的取值。权威规则请优先参考链接的来源;这些表格只是记忆辅助。
HTTP 状态与缓存新鲜度
| 状态码 | 含义 | 用途 |
|---|---|---|
| 200 OK | 请求成功;响应内容取决于方法(HEAD 无正文) | 健康路由的基线 |
| 301 Moved Permanently | URI 永久变更 | 在日志里区分新旧 URI |
| 308 Permanent Redirect | 永久重定向保留请求方法,包括 GET 与 HEAD | 重定向笔记 |
| 206 Partial Content | 满足范围请求 | 范围请求笔记 |
| 304 / 412 | 304 允许条件 GET/HEAD 复用;412 表示前置条件失败 | 条件请求笔记 |
| 404 | 未找到 | 缺失路由检查;自定义错误页必须保留正确状态码 |
| 500 / 502 / 503 | 服务器意外错误 / 无效上游响应 / 暂时不可用 | 发布冒烟测试与重启循环 |
| 指令或响应头 | 效果 |
|---|---|
Cache-Control: public, max-age=31536000, immutable | 允许共享缓存存储,为内容哈希制品设置长新鲜期;immutable 仅在新鲜期内生效 |
Cache-Control: private, max-age=300 加 ETag | 私有缓存的新鲜期为 300 秒;ETag 支持再验证,共享缓存不得存储 |
Cache-Control: no-store | 要求缓存不存储本次交互;不追溯清除旧副本,也不保证隐私 |
ETag / If-None-Match 得到 304 | GET/HEAD 再验证使用弱比较;304 无正文,不证明字节相同 |
Last-Modified / If-Modified-Since | 基于时间戳的验证,通常为弱验证;同时发送 If-None-Match 时忽略此条件 |
公网边缘的安全响应头
| 响应头 | 策略简述 |
|---|---|
Content-Security-Policy | default-src 'self'; script-src 'none' 在支持的浏览器中按此策略阻止脚本执行 |
Strict-Transport-Security | max-age=31536000; includeSubDomains 经有效 HTTPS 接收后,为该主机及其后代存储一年的 HTTPS 策略 |
X-Content-Type-Options | nosniff 拒绝 MIME 类型缺失或不适用的脚本与样式加载 |
X-Frame-Options | DENY 阻止被内嵌(framing) |
Referrer-Policy | strict-origin-when-cross-origin 限制来源信息外泄 |
Set-Cookie | Secure; HttpOnly; SameSite=Lax 显式限制传输、脚本访问与跨站发送;Domain 与 Path 的作用域规则另行决定 |
这些是策略示例,不是通用默认值或当前边缘测量结果。首次通过 HTTP 访问未知主机时,若没有预先存储的策略(例如预加载),HSTS 无法提供保护。启用 includeSubDomains 前,应让每个被覆盖的后代主机准备好 HTTPS;移除响应头不会清除已缓存策略。Cookie 的这些属性不会建立主机或路径边界,也不能替代 CSRF 防护。
另见:安全响应头、HSTS 灰度、Cookie 作用域、内容类型。
DNS 与 TLS 检查
| 记录或检查 | 回答的问题 |
|---|---|
A / AAAA | 域名解析到哪个地址 |
CNAME | 别名跟随哪个规范名 |
CAA | 有效策略在签发时授权哪些 CA;并非 TLS 信任检查 |
TTL | 通常的缓存新鲜期;至少提前一个旧 TTL 调小,因为既有缓存答案仍保留原寿命 |
TTL 不是统一的切换截止时间:过期应答策略、应用缓存与已有连接可能持续更久。观察窗口内应让新旧端点都保持可用。下面是检视方法,不是新采集的测量结果;只应针对获准访问的目标使用。
# 域名解析到哪里,还剩多久
dig +nocmd +noall +answer +ttl example.com A
# 打印首张(叶)证书的日期与签发者;并非证书链验证
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null 2>/dev/null | openssl x509 -noout -dates -issuer
只显示答案的 dig 输出隐藏 DNS 状态与权威信息;仅凭空输出无法诊断失败。在 OpenSSL 管道中,x509 读取首张证书,因此 -showcerts 不会让最终输出成为完整证书链。SNI 选择主机,却不验证名称或信任关系。管道丢弃 s_client 诊断信息;未启用管道失败检测时,最终状态可能隐藏前面命令的失败。应保留诊断信息,并在适当超时限制下另做主机名与信任检查;这条检视管道没有显式网络截止时间。
Caddy 与发布冒烟测试
| 步骤 | 检查 |
|---|---|
| 构建 | 每次发布一个完整制品目录 |
| 清单 | 每个已发布字节都有校验和点名 |
| 发布 | 验证通过后再切换服务目录;保留上一个可用版本 |
| 边缘 | 请求一个页面、一个文件、一个不存在路径;对照状态码与内容类型 |
| TLS | 在公网主机名上测试 HTTP 到 HTTPS 跳转与证书名称 |
小工具可从资源下载,仓库内位于 static/downloads/。下面的裸命令名假设已审阅的脚本可执行且位于 PATH;否则用 sh 调用已审阅的本地副本。使用前把 <file> 换成实际且加引号的文件名;尖括号是说明记号,不是可照抄的 shell 语法。
# 逐文件
sha256sum <file>
# 操作套件里的纯文本检查
check-http-headers.sh https://www.xbcatm.com/
check-tls-expiry.sh www.xbcatm.com 30
HTTP 小工具发出 GET、跟随重定向(可能到其他主机)、丢弃正文,并设有 20 秒传输限制。应检查它打印的状态与最终 URL:仅返回 HTTP 4xx/5xx 不会使它失败。TLS 小工具只把叶证书的 notAfter 与指定区间比较,不验证 notBefore、主机名、证书链信任或吊销状态,还需另设任务级超时。两者都不比较已发布的正文字节。本轮速查表审阅没有执行这些网络示例。
另见:静态根目录、发布检查清单、读取边缘、原子切换、发布清单、资源。
来源
RFC 9110 — HTTP Semantics,状态码定义与区段,已核验 2026-08-24。
MDN: HTTP response status codes,完整状态码列表,已核验 2026-08-24。
RFC 9111: HTTP Caching,缓存指令与验证规则,已核验 2026-09-05。
MDN: Content Security Policy guide,CSP 指令名称与语法,已核验 2026-09-05。
MDN:
Strict-Transport-Security,HSTS 指令与部署注意事项,已核验 2026-09-05。RFC 8659 — DNS Certification Authority Authorization,CAA 查询与属性语义,已核验 2026-09-05。
Caddy
file_server指令,文件服务、根目录与索引默认值,已核验 2026-09-05。OpenSSL
s_client文档,SNI 与证书检查选项,已核验 2026-09-05。RFC 6797 — HTTP Strict Transport Security,已学习策略、后代作用域与首次访问限制,已核验 2026-10-19。
HTTPWG Cookie 规范草案,Domain、Path、Secure、HttpOnly 与 SameSite 的独立规则,已核验 2026-10-19。
RFC 1034 — Domain Names 与 RFC 8767 — 提供过期数据,TTL 准备与过期应答限制,已核验 2026-10-19。
OpenSSL
x509,单张证书显示与只检查到期的-checkend,已核验 2026-10-19。curl 手册,GET、重定向、时间限制与 HTTP 错误状态处理,已核验 2026-10-19。
W3C Content Security Policy Level 3 与 WHATWG Fetch 源码,脚本策略与按请求目标区分的
nosniff检查,已核验 2026-10-19。RFC 8246 — 不可变响应,
immutable仅在新鲜期内生效,已核验 2026-10-19。