Skip to content

参考

基于 HTTP 标准(RFC 9110 语义 / RFC 9111 缓存)· 核于 2026-06

速查

  • 报文四段:请求行 / 状态行 → 首部 → 空行(CRLF)→ 体
  • 方法语义:GET 读、POST 写、PUT 替换、PATCH 局改、DELETE 删、HEAD 仅头、OPTIONS 探询
  • 安全 ⊆ 幂等;安全 = GET/HEAD/OPTIONS/TRACE,幂等再加 PUT/DELETEPOST 都不是
  • 状态码:1xx 信息 / 2xx 成功 / 3xx 重定向 / 4xx 客户端错 / 5xx 服务端错
  • 永久重定向 301/308、临时 302/307/303308/307 严格保留方法与体
  • 401 = 未认证(带 WWW-Authenticate)、403 = 已认证但无权
  • 首部名大小写不敏感、多值逗号分隔;HTTP/2 起规范为小写 + 伪首部
  • 内容协商:Accept/Accept-Language/Accept-Encoding + q 值;响应配 Vary
  • Cookie 安全三件套:HttpOnly(防 JS 读)+ Secure(仅 HTTPS)+ SameSite(防 CSRF)
  • 缓存:强缓存 Cache-Control/Expires 不发请求;协商缓存 ETag/Last-Modified304
  • no-cache(可存但每次须协商)≠ no-store(完全不存)
  • 范围请求:Accept-Ranges: bytes + Range206 + Content-Range

请求方法速查

方法语义安全幂等可缓存请求体
GET获取资源
HEAD同 GET 但只要响应头
POST提交 / 创建(服务器定 URI)有条件
PUT整体替换指定 URI 资源
PATCH局部更新资源❌(不保证)有条件
DELETE删除资源可选
OPTIONS探询资源支持的能力可选
TRACE回显请求(诊断)
CONNECT建立隧道(代理 / HTTPS)

POST/PATCH「可缓存」需响应显式带新鲜度信息且匹配 Content-Location,实际极少缓存。

状态码速查

高频码含义
1xx100 Continue · 101 Switching Protocols · 103 Early Hints信息性、临时响应
2xx200 OK · 201 Created · 204 No Content · 206 Partial Content成功
3xx301 Moved Permanently · 302 Found · 303 See Other · 304 Not Modified · 307/308重定向
4xx400 · 401 · 403 · 404 · 405 · 409 · 410 · 422 · 429 Too Many Requests客户端错误
5xx500 · 501 · 502 Bad Gateway · 503 Service Unavailable · 504 Gateway Timeout服务端错误

易混状态码辨析

对比区别
301 vs 308都永久;308 严格保留方法与体,301 历史上常被客户端改写为 GET
302 vs 307都临时;307 严格保留方法与体,302 可能被改写为 GET
302 vs 303303 强制转 GET,专用于 POST 提交后重定向(PRG 模式)
401 vs 403401 未认证(应带 WWW-Authenticate);403 已认证但无权限
502 vs 503 vs 504上游返回无效响应 / 服务主动不可用(带 Retry-After)/ 等上游超时
no-cache vs no-store前者可缓存但每次须向源校验;后者完全不缓存

高频首部速查

分类首部作用
请求Host目标主机(HTTP/1.1 必填)
请求Authorization携带认证凭据
请求Accept / Accept-Language / Accept-Encoding内容协商偏好
请求Cookie回传 Cookie
请求Range请求资源的某个字节范围
请求If-None-Match / If-Modified-Since协商缓存条件
响应Location重定向目标 / 201 新资源地址
响应Set-Cookie下发 Cookie
响应Cache-Control / ETag / Last-Modified缓存控制与校验
响应Vary声明响应随哪些请求头变化
响应Retry-After配合 429/503,提示重试时机
表示Content-Type体的媒体类型(含 charset)
表示Content-Length体的字节长度
表示Content-Encoding体的压缩方式(gzip/br/zstd)

Cache-Control 指令速查

指令含义
max-age=N资源在 N 秒内新鲜(强缓存)
s-maxage=N仅对共享缓存(CDN/代理)生效,优先于 max-age
no-cache可缓存,但每次使用前必须向源校验
no-store完全不缓存(敏感数据)
private只允许浏览器等私有缓存存,CDN 不存
public允许任何缓存存
must-revalidate过期后必须校验,不得用陈旧副本
immutable有效期内内容绝不改变,刷新也不发校验请求
属性作用
Domain / Path作用域(哪些域名 / 路径会带上)
Expires / Max-Age过期时间(Max-Age 优先);都不设 = 会话 Cookie
Secure仅通过 HTTPS 发送
HttpOnlyJS 不可读(document.cookie 取不到),防 XSS 窃取
SameSiteStrict / Lax(默认)/ None(须配 Secure),防 CSRF
__Host- 前缀强制 Secure + 无 Domain + Path=/,最严作用域

权威链接

标准 / 规范

指南 / 参考

兼容性 / 调试

  • 浏览器 DevTools → Network 面板(看真实请求 / 响应首部、状态码、缓存命中)
  • curl -v / curl -I(命令行查看完整报文 / 仅响应头)

相关页