HTTP 协议速查

HTTP 协议速查表收录常用请求方法与语义、请求头与响应头的含义和示例值、Cache-Control 等缓存控制指令、CORS 跨域响应头、Cookie 安全属性、状态码分组以及内容协商与压缩相关写法,适合前后端开发、接口调试和线上排障时快速查阅,免费在线使用,无需安装。

HTTP 头部与协议要点速查,输入关键字过滤(如 cache / origin / cookie);点击左列名称即可复制。

请求方法与语义

GET安全、幂等取资源,参数在 URL;不应有副作用,可被缓存
HEAD安全、幂等同 GET 但不返回响应体,用于探活与取头
POST不安全、非幂等提交数据,重复提交会重复创建
PUT幂等整体替换资源,重复调用结果相同
PATCH通常非幂等部分更新,常见 JSON Patch / Merge Patch
DELETE幂等删除资源;重复调用状态码可能不同
OPTIONS安全查询支持的方法,也是 CORS 预检请求
TRACE—回显请求,存在安全风险,服务器应禁用
CONNECT—建立隧道,HTTPS 代理用
Idempotency-Key: uuid请求头支付类接口用它实现幂等,重复请求返回同一结果
GET /api/list?page=2&size=20URL数组参数重复同名键或用逗号分隔,需与后端约定

常用请求头

Host: example.com必须HTTP/1.1 唯一强制头,虚拟主机靠它分发
User-Agent: Mozilla/5.0 …建议客户端标识,不要用它做安全判断
Accept: text/html, application/json内容协商客户端可接受的类型,可带 q 权重
Accept-Language: zh-CN,zh;q=0.9内容协商期望语言,服务端据此返回多语言
Accept-Encoding: gzip, deflate, br压缩支持的压缩算法,服务端回 Content-Encoding
Connection: keep-alive连接HTTP/1.1 默认复用;HTTP/2 忽略此头
Content-Type: application/json请求体描述请求体格式,缺失易导致解析失败
Content-Length: 128请求体体字节数;分块传输时改用 Transfer-Encoding
Transfer-Encoding: chunked流式长度未知时分块发送,常用于流式响应
Expect: 100-continue大体先问服务器是否接受,避免白传大包
Referer: https://site/from来源来源页;注意拼写本就是 Referer,可用 Referrer-Policy 控制
Origin: https://a.com跨域CORS 与 POST 携带,服务端据此判断放行
Cookie: a=1; b=2状态浏览器自动附带,同名 cookie 按域和路径排序
Authorization: Bearer <token>认证凭据头;Basic base64 仅适合 HTTPS
Authorization: Digest …认证挑战-应答式,比 Basic 少暴露密码
If-None-Match: "abc123"条件请求配合 ETag,未变更返回 304
If-Modified-Since: Wed, 21 Oct 2026 …条件请求配合 Last-Modified,精度只到秒
If-Match: "abc"并发控制PUT 时做乐观锁,不匹配返回 412
Range: bytes=0-1023断点续传请求部分资源,成功返回 206
Cache-Control: no-cache请求级要求回源校验,不用本地缓存响应
Pragma: no-cache兼容HTTP/1.0 遗留,仅 HTTPS 下兼容旧代理
DNT: 1隐私禁止跟踪声明,多数站点已忽略
Upgrade-Insecure-Requests: 1升级请求服务端优先返回 HTTPS 版本
TE: trailers分块接受分块尾部头,流式响应常用
Max-Forwards: 10跳转限制 TRACE/OPTIONS 经代理的跳数
X-Request-Id: uuid自定义链路追踪 ID,服务端应原样回写到日志
X-Forwarded-For: client, proxy1代理伪造成本低,只可信最后一跳或改用签名头
X-Forwarded-Proto: https代理告知后端原始协议,避免生成 http 回调地址
Sec-Fetch-Site: same-origin浏览器浏览器附带请求来源分类,可辅助防 CSRF
Priority: u=0, iHTTP/2 起声明资源优先级,服务器据此调度

常用响应头

Server: nginx/1.27信息服务端软件,生产建议隐藏版本号
Date: Wed, 21 Oct 2026 07:28:00 GMT时间响应生成时间,必须 GMT 格式
Content-Type: text/html; charset=utf-8实体响应体类型与字符集,优先级高于页面 meta
Content-Length: 3423实体字节数;开启压缩时是压缩后长度
Content-Encoding: gzip实体压缩算法,需与客户端 Accept-Encoding 匹配
Content-Language: zh-CN实体主体语言
Content-Disposition: attachment; filename="a.pdf"下载触发下载;中文名用 filename*=UTF-8''编码值
Content-Range: bytes 0-1023/8000分段206 响应必须携带实际范围与总长
Accept-Ranges: bytes能力声明支持范围请求;none 表示不支持
ETag: "675af34563dc"校验资源版本标识,弱校验用 W/ 前缀
Last-Modified: Wed, 21 Oct 2026 …校验资源修改时间,配合条件请求
Vary: Accept-Encoding, Origin缓存键声明影响响应的请求头,缓存必须据此区分副本
Location: /new/path重定向3xx 跳转目标或 201 新建资源地址
Retry-After: 120限流429/503 告知多久后重试,可写 HTTP 日期
Allow: GET, HEAD, OPTIONS能力该资源支持的方法,405 响应必须带
Link: </style.css>; rel=preload提示资源预加载/预连接提示,等价于 HTML link
Age: 300缓存响应在缓存中已存放的秒数
Warning: 199 - "network disconnected"诊断旧版缓存告警头,HTTP 缓存已弃用
Set-Cookie: id=a3; HttpOnly; Secure; SameSite=Lax状态写 Cookie,属性缺失会带来 XSS/CSRF 风险
Server-Timing: db;dur=53性能服务端各阶段耗时,浏览器 DevTools 可见
Refresh: 5;url=/next兼容非标准跳转,应改用 301/302 或 meta refresh

缓存控制

Cache-Control: max-age=3600强缓存一小时内直接用本地副本,不发请求
Cache-Control: no-cache协商缓存每次回源校验,可用 304 复用副本
Cache-Control: no-store不缓存禁止任何存储,登录/支付页常用
Cache-Control: must-revalidate严格过期后必须回源,不允许返回过期副本
Cache-Control: public, s-maxage=86400共享缓存s-maxage 只作用于 CDN 等共享缓存
Cache-Control: private, max-age=600私有缓存只允许浏览器缓存,CDN 不保存
Cache-Control: immutable带指纹资源声明内容永不变化,浏览器不再发起校验
Cache-Control: max-age=31536000, immutable最佳实践JS/CSS 带 hash 文件名时的一年缓存策略
Expires: Wed, 21 Oct 2027 07:28:00 GMTHTTP/1.0绝对过期时间,被 max-age 覆盖
Last-Modified + ETag校验器ETag 更准但会击穿集群缓存,两者常并用
Cache-Control: no-transform代理禁止中间代理改写响应体(如压缩、图片优化)
Clear-Site-Data: "cache", "cookies"清理要求浏览器清除站点数据,退出登录时用

CORS 跨域

Access-Control-Allow-Origin: https://a.com放行来源单个来源或 *;带凭据时不能写 *
Access-Control-Allow-Credentials: true允许带 Cookie必须与具体 Origin 同时出现
Access-Control-Allow-Methods: GET, POST, PUT方法白名单预检响应,声明允许的实际方法
Access-Control-Allow-Headers: Content-Type, X-Token请求头白名单预检响应,自定义头必须在此列出
Access-Control-Request-Method: PUT预检请求浏览器发起 OPTIONS 时携带
Access-Control-Request-Headers预检请求告知服务端将用到的自定义头
Access-Control-Expose-Headers: X-Total-Count暴露响应头默认 JS 只能读 6 个安全响应头
Access-Control-Max-Age: 86400预检缓存缓存预检结果,减少 OPTIONS 往返
Origin: null特殊来源本地文件与沙箱 iframe 的来源,切勿回显放行
Private-Network Access新规范访问内网/本机地址需额外允许头,浏览器会预检
跨域用 JSONP / postMessage替代方案JSONP 只支持 GET 且有 XSS 风险,优先 CORS

Cookie 属性

Set-Cookie: name=value基础名称与值,值含特殊字符需 URL 编码
Domain=.example.com作用域含子域;不能设为跨站域,浏览器会忽略
Path=/api作用域只有该路径前缀的请求才附带
Expires / Max-Age生命周期缺省为会话 Cookie;Max-Age=0 立即删除
HttpOnly安全JS 读不到,防 XSS 窃取会话
Secure安全仅 HTTPS 发送,现代浏览器对 SameSite=None 强制要求
SameSite=LaxCSRF默认值;跨站顶级 GET 才附带
SameSite=StrictCSRF任何跨站请求都不带,从外链跳回可能未登录
SameSite=None跨站第三方场景,必须同时带 Secure
Partitioned(CHIPS)新特性按顶层站点分区存储,配合第三方 Cookie 限制
__Host- / __Secure- 前缀加固浏览器按前缀校验属性,防 Cookie 注入与降级

状态码分组

200 / 201 / 204成功正常返回 / 已创建(带 Location)/ 无内容
202 / 206成功已接受异步处理 / 部分内容(Range 请求)
301 / 308永久重定向可被缓存;308 保持方法与请求体不变
302 / 303 / 307临时重定向303 强制转 GET(表单 Post/Redirect/Get)
304未修改命中校验器,直接用本地缓存副本
400 / 422客户端错误请求格式非法 / 语法正确但语义校验失败
401 / 403认证授权未登录(带 WWW-Authenticate)/ 已登录但无权限
404 / 405 / 410资源未找到 / 方法不允许(带 Allow)/ 永久删除
409 / 412 / 428冲突状态冲突 / 前置条件失败 / 需要先做条件请求
416范围错误Range 越界,配合 Content-Range: */总长
429限流请求过多,应带 Retry-After
500 / 502 / 503 / 504服务端错误程序异常 / 上游返回无效 / 不可用 / 上游超时
100 Continue / 101 Switching信息等待请求体 / 协议升级(WebSocket)
103 Early Hints信息先回 Link 提示,浏览器可提前取资源

安全与传输头

Strict-Transport-Security: max-age=31536000; includeSubDomainsHSTS强制后续走 HTTPS,首次上线慎用长周期
X-Content-Type-Options: nosniffMIME禁止浏览器嗅探响应类型
X-Frame-Options: DENY / SAMEORIGIN点击劫持老浏览器方案,新方案用 CSP frame-ancestors
Referrer-Policy: strict-origin-when-cross-origin隐私控制 Referer 泄露程度,建议显式设置
Permissions-Policy: geolocation=()能力关闭浏览器能力授权入口
Content-Security-Policy: default-src 'self'XSS资源来源白名单;报告模式用 Content-Security-Policy-Report-Only
Cross-Origin-Opener-Policy: same-origin隔离隔离窗口引用,配合 COEP 才能开 SharedArrayBuffer
Cross-Origin-Embedder-Policy: require-corp隔离只加载允许跨域嵌入的资源
Cross-Origin-Resource-Policy: same-site资源声明该资源可被谁跨源加载
WWW-Authenticate: Bearer认证401 响应说明可用的认证方案
Keep-Alive: timeout=5, max=1000连接HTTP/1.1 长连接复用参数

HTTP/2 与 HTTP/3 要点

多路复用HTTP/2同一连接并行多个流,不再需要分域合并
HPACK 头部压缩HTTP/2静态表 + 动态表,重复头只传索引
服务器推送 Push已弃用191 浏览器不再支持,改用 103 或 preload
伪头部 :method / :path / :scheme / :status二进制分帧替代请求行与状态行,全小写
ALPN: h2协商TLS 握手中选定协议,明文 HTTP/2(h2c)很少支持
QUIC / HTTP/3UDP消除队头阻塞,0-RTT 重连;证书需支持
Alt-Svc: h3=":443"升级提示告知备用协议入口,HTTP/2 及以后由设置帧替代
流优先级与权重调度HTTP/2 用优先级帧,HTTP/3 用 Priority 参数
单个大文件仍受带宽限制误区多路复用解决队头阻塞,不解决吞吐瓶颈