← 返回画廊

HTTP 状态码与常用请求/响应头速查

快速查表:中文程序员调接口/排查必备。


一、HTTP 状态码速查(按分类)

1xx - 信息类(很少用到)

状态码名称含义场景
100Continue客户端继续发送请求POST/PUT 前客户端发 Expect: 100-continue 头,服务器同意后才发 body;常见于大文件上传
101Switching Protocols切换协议升级到 WebSocket(Upgrade: websocket)或 HTTP/2

2xx - 成功(一切正常)

状态码名称含义场景
200OK请求成功,返回结果标准 GET/POST/PUT/PATCH 响应
201Created资源创建成功POST 创建新资源时返回;应附带 Location 头指向新资源 URL
204No Content请求成功但无返回内容DELETE 成功删除、PUT 成功更新但无需返回体,节省带宽
206Partial Content部分内容返回分片数据;涉及 Range 请求头和 Content-Range 响应头;用于断点续传、视频进度条

3xx - 重定向(需要进一步操作)

状态码名称含义场景易混对比
301Moved Permanently永久重定向资源永久移动到新地址;浏览器/客户端会记住,下次直接请求新地址;旧 URL 不再存在301 vs 302:301 是永久(缓存),302 是临时(不缓存);301 vs 308:301 可能改 POST→GET,308 保持原方法
302Found临时重定向资源暂时在其他地址;下次仍会请求原 URL;可能改变 POST→GET(不规范但常见)与 307 相似,但 307 保证方法不变
304Not Modified资源未修改客户端发 If-None-Match / If-Modified-Since,服务器告诉"你的缓存版本还有效";不返回响应体,节省带宽配套 ETag / Last-Modified
307Temporary Redirect临时重定向(方法不变)与 302 类似但保证 POST 仍为 POST(不改方法)307 更规范,但浏览器支持度不如 302;307 vs 308:307 临时,308 永久
308Permanent Redirect永久重定向(方法不变)与 301 类似但保证 POST 仍为 POST(不改方法)301 可能改 POST→GET,308 严格保持;最规范但支持度最低

3xx 易混总结


4xx - 客户端错误(你的请求有问题)

状态码名称含义场景易混对比
400Bad Request请求格式错误JSON 解析失败、必填字段缺失、参数类型错误等;排查:检查请求体格式、Content-Type 头400 vs 422:400 是格式/语法错误,422 是语义错误(格式对但业务规则违反)
401Unauthorized身份验证失败缺少 Authorization 头、Token 过期、凭证无效;排查:检查 Token/Cookie、验证授权服务器401 vs 403:401 是"你是谁?"(身份问题),403 是"你不能"(权限问题)
403Forbidden禁止访问身份有效但权限不足(如普通用户访问管理员接口);排查:检查用户角色/权限、资源访问策略与 401 区别:已验证身份但被明确拒绝
404Not Found资源不存在URL 错误、资源被删除;排查:确认 URL 是否正确、检查路由配置
405Method Not Allowed请求方法不支持对 GET 专用接口发 POST;排查:检查接口文档、使用正确的 HTTP 方法
409Conflict冲突并发修改(如数据库版本冲突)、重复创建资源;排查:重试或检查资源当前状态常见于分布式系统、乐观锁冲突
410Gone资源永久删除与 404 类似但明确说明资源曾存在过,现已永久删除410 vs 404:410 暗示资源曾有过,客户端不应继续请求
422Unprocessable Entity无法处理的实体请求格式正确但业务规则违反(如邮箱已注册、年龄不符要求);排查:查看错误详情,修正业务数据422 vs 400:422 是语义错(业务规则),400 是语法错
429Too Many Requests请求过于频繁触发限流;排查:检查 Retry-After 头,等待后重试;需要实现指数退避需要遵守服务器的限流策略

4xx 易混总结


5xx - 服务器错误(服务器出问题了)

状态码名称含义场景易混对比
500Internal Server Error服务器内部错误代码崩溃、未捕获异常、逻辑 bug;排查:查看服务器日志、联系服务方通用的"我也不知道啥错了"响应
502Bad Gateway网关错误网关/代理(Nginx/LB)与上游服务器通信失败(无响应、连接重置、超时等);排查:检查上游服务健康状态、网络连接502 vs 503 vs 504:502 是网关失败,503 是服务不可用,504 是网关超时
503Service Unavailable服务暂时不可用服务器维护、过载、数据库挂掉;排查:稍后重试,查看 Retry-After 头;实现自动重试策略通常是临时的(维护)或需要扩容
504Gateway Timeout网关超时网关等待上游服务器响应超时(一般是上游慢或未响应);排查:检查上游服务是否卡住、网络延迟、超时配置504 vs 502:504 是超时失败,502 是连接失败

5xx 易混总结


二、常用请求头速查

请求头值示例含义与作用
AuthorizationBearer eyJhbGc... / Basic dXNlcjp...身份认证凭证;Bearer 用于 JWT/Token,Basic 用于用户名密码 Base64 编码
Content-Typeapplication/json / multipart/form-data请求体格式;JSON/XML/表单/文件上传等
Acceptapplication/json, text/html告诉服务器"我接受哪些格式";服务器应返回匹配的 Content-Type
User-AgentMozilla/5.0 (Windows NT 10.0; Win64; x64)...客户端身份标识(浏览器、爬虫、SDK);用于统计、反爬、适配
Cookiesessionid=abc123; token=xyz789存储在客户端的会话数据;每次请求自动带上
Refererhttps://example.com/page请求来源页面 URL;用于反盗链、来源统计;跨域时受限
Originhttps://example.com请求来源域;主要用于 CORS 预检,比 Referer 更严格
If-None-Match"33a64df551"ETag 值;配套 304 Not Modified,用于缓存验证
If-Modified-SinceWed, 21 Oct 2024 07:28:00 GMT资源修改时间戳;配套 304 Not Modified,用于缓存验证
Rangebytes=200-1023 / bytes=0-请求文件片段;用于断点续传、视频进度条;需配套 206 响应
X-Requested-WithXMLHttpRequest告诉服务器这是 AJAX 请求;常用于防 CSRF
Cache-Controlmax-age=3600缓存控制指令;还可带 no-cache / no-store / must-revalidate
X-Forwarded-For203.0.113.45, 70.41.3.18真实客户端 IP;由代理/网关添加,便于日志审计
Connectionkeep-alive / close连接管理;HTTP/1.1 默认 keep-alive,keep-alive 复用 TCP 连接

三、常用响应头速查

响应头值示例含义与作用
Content-Typeapplication/json; charset=utf-8响应体格式;告诉客户端如何解析(JSON/HTML/PDF 等)
Content-Length1234响应体字节数;便于客户端知道何时读完
Cache-Controlpublic, max-age=3600 / no-cache缓存策略;max-age 缓存秒数,no-cache 每次验证,no-store 禁用缓存
ETag"33a64df551427"资源版本标记;客户端下次用 If-None-Match 验证,服务器返回 304
Last-ModifiedWed, 21 Oct 2024 07:28:00 GMT资源最后修改时间;客户端下次用 If-Modified-Since 验证
Set-Cookiesessionid=abc123; Path=/; HttpOnly; Secure设置浏览器 Cookie;后续自动在请求头中发送;HttpOnly 防 XSS,Secure 仅 HTTPS
Locationhttps://example.com/new-path重定向目标 URL;配套 301/302/307/308/3xx 状态码
Access-Control-Allow-Originhttps://frontend.com / *CORS 跨域:允许哪些源访问;* 允许所有源
Access-Control-Allow-MethodsGET, POST, PUT, DELETECORS:允许哪些 HTTP 方法
Access-Control-Allow-HeadersContent-Type, AuthorizationCORS:允许哪些请求头
Access-Control-Allow-CredentialstrueCORS:是否允许发送凭证(Cookie/认证);必须配套 Allow-Origin 不为 *
Content-Encodinggzip / deflate / br响应体压缩方式;减小传输大小;客户端自动解压
Content-Rangebytes 200-1023/2048分片响应范围;配套 206 状态码,用于断点续传
Retry-After120 / Wed, 21 Oct 2024 07:28:00 GMT重试等待时间(秒数或时间戳);配套 429/503 状态码
X-RateLimit-Limit100限流配额:该时间窗口内允许请求数
X-RateLimit-Remaining42限流配额:剩余可用请求数
X-RateLimit-Reset1635060480限流配额:重置时间戳(Unix 时间)
Servernginx/1.21.0服务器软件标识;用于漏洞扫描、版本识别
Strict-Transport-Securitymax-age=31536000; includeSubDomainsHSTS:强制 HTTPS;浏览器会记住,后续自动升级为 HTTPS

四、排查场景 → 优先查看

排查场景优先检查的状态码/头检查步骤
前端访问被拒401 / 4031. 看是 401(检查 Token/Cookie)还是 403(检查权限)2. 查 Authorization 请求头 3. 看是否过期/无效
跨域报错无法看到响应体(CORS 预检失败)1. 看 Network 有无 OPTIONS 预检请求 2. 检查 Access-Control-Allow-Origin / Allow-Methods / Allow-Headers 3. 若发送凭证需 Credentials=true 且 Origin 不能为 *
请求被拒400 / 422 / 4051. 400:检查 JSON 格式、必填字段、Content-Type 2. 422:检查业务规则(重复、数据不符)3. 405:检查 HTTP 方法(GET/POST/PUT 等)是否匹配
请求超时/无响应504 / 502 / 请求挂起1. 504:网关超时,上游服务慢;增加超时时间 2. 502:网关失败,上游服务下线;联系后端 3. 无响应:检查网络、防火墙、DNS
服务故障/维护503 / 5001. 503:查 Retry-After 头,稍后重试 2. 500:查服务器日志,告知后端
资源未更新(缓存问题)3041. 看请求有无 If-None-Match / If-Modified-Since 头 2. 响应有无 ETag / Last-Modified 头 3. 刷新时加 Cache-Control: no-cache 强制验证
限流被封4291. 查 X-RateLimit-* 头了解配额 2. 查 Retry-After 头等待多久 3. 实现指数退避重试策略
文件下载中断206 / Content-Range1. 检查请求有无 Range 头 2. 响应有无 Content-Range 和分片大小 3. 实现断点续传逻辑
重定向死循环/过多301 / 302 / 307 / 3081. 追踪 Location 头是否形成闭环 2. 检查重定向深度(不超过 5 级) 3. 看浏览器控制台的重定向链

五、速记技巧

记忆 3xx(重定向)

记忆 4xx(客户端错)

记忆 5xx(服务器错)

CORS(跨域)快速检查

预检请求失败 → 看浏览器 Console 和 Network 的 OPTIONS 请求
→ 检查响应头 Access-Control-Allow-Origin 是否匹配
→ 检查 Allow-Methods/Allow-Headers 是否包含你用的方法/头
→ 若发送 Cookie 需 Credentials=true 且 Origin 不能为 *

缓存验证快速检查

304 Not Modified 出现 → 检查请求头有无 If-None-Match/If-Modified-Since
→ 检查响应头有无 ETag/Last-Modified
→ 强制刷新:加 Cache-Control: no-cache(验证)或 no-store(禁缓存)

六、常见错误处理示例

网络错误排查流程

请求失败
├─ 无响应 / 超时 → 504/连接问题
│  └─ 检查:上游服务、网络延迟、DNS 解析
├─ 返回 502 → 网关无法连接上游
│  └─ 检查:上游服务是否启动、网络是否通
├─ 返回 503 → 服务不可用(维护/过载)
│  └─ 等待 Retry-After 后重试
└─ 返回 500 → 服务器代码崩溃
   └─ 查后端日志,修复 bug

认证/授权排查流程

请求被拒
├─ 返回 401 → 身份验证失败
│  ├─ 无 Authorization 头 → 补充 Token
│  ├─ Token 过期 → 刷新 Token
│  └─ Token 无效 → 重新登录
├─ 返回 403 → 权限不足
│  ├─ 检查用户角色
│  ├─ 检查资源权限策略
│  └─ 申请提权或联系管理员
└─ 返回 400/422 → 请求参数错
   ├─ 检查 JSON 格式、必填字段
   └─ 查错误详情信息

限流/重试策略

遇到 429 → 触发限流
├─ 读 Retry-After 头(等待秒数或时间戳)
├─ 读 X-RateLimit-Reset(配额重置时间)
└─ 实现指数退避重试(延迟 1s → 2s → 4s → 8s)

最后更新:2026-07-12 用途:快速参考、调试排查、面试准备