58 个常用 HTTP 状态码按 5 大类整理:1xx 信息响应、2xx 成功、3xx 重定向、4xx 客户端错误、5xx 服务端错误。每个状态码都配含义 + 真实使用场景,支持关键字即时搜索与分类切换,接口调试、排查报错时随手一查。
没有匹配的状态码,换个关键词试试。
100
Continue · 客户端应继续发送请求体
场景:客户端发送大请求体前用 Expect: 100-continue 探测服务器是否愿意接收,避免白传几十 MB
101
Switching Protocols · 服务器同意切换协议
场景:WebSocket、HTTP/2 升级握手时返回,配合 Upgrade 请求头使用
102
Processing · 服务器已收到,仍在处理
场景:WebDAV 复杂请求处理超过 20 秒时返回,防止客户端超时断开
103
Early Hints · 预提示,最终响应稍后到
场景:在正式响应前让浏览器预加载关键 CSS/JS 资源,加速首屏渲染
200
OK · 请求成功
场景:GET/POST 常规成功响应,日常见得最多的状态码
201
Created · 创建成功
场景:POST/PUT 创建资源成功,应返回 Location 头指向新资源地址
202
Accepted · 已接受,异步处理中
场景:异步任务(发邮件、批处理)已入队但不保证完成,客户端需轮询结果
203
Non-Authoritative Information · 非权威信息
场景:代理/CDN 对源站响应做了改写后返回,告诉客户端内容不是原版
204
No Content · 成功但无返回体
场景:PUT/PATCH 更新成功、DELETE 删除成功时常用,响应体为空
205
Reset Content · 成功,要求重置视图
场景:表单提交成功后让浏览器清空表单继续填写下一条
206
Partial Content · 返回部分内容
场景:断点续传、视频拖动进度条时通过 Range 请求头获取片段
208
Already Reported · 已报告过
场景:WebDAV 集合枚举中绑定资源已在前面出现,避免重复列出
226
IM Used · 已应用实例操作
场景:配合 HTTP 增量编码(Delta encoding)只返回内容差异
300
Multiple Choices · 多种可选格式
场景:同一资源有 JSON/XML/HTML 多种表示,让客户端自行选择
301
Moved Permanently · 永久重定向
场景:换域名、HTTP 迁 HTTPS、URL 规范化;搜索引擎会转移权重
302
Found · 临时重定向
场景:登录后跳转、临时维护页;不转移 SEO 权重,方法可能被改为 GET
303
See Other · 请用 GET 访问另一地址
场景:POST 提交成功后跳结果页(PRG 模式),防止刷新导致重复提交
304
Not Modified · 缓存仍然有效
场景:协商缓存命中(If-None-Match/ETag 或 If-Modified-Since),无响应体,节省流量
307
Temporary Redirect · 临时重定向,保持方法
场景:与 302 类似但严格保持请求方法与请求体,跨域 POST 跳转更安全
308
Permanent Redirect · 永久重定向,保持方法
场景:与 301 类似但严格保持 POST 等方法,适合 API 地址永久迁移
400
Bad Request · 请求语法错误
场景:参数缺失、格式非法、JSON 解析失败等,最通用的客户端错误
401
Unauthorized · 未认证
场景:未登录或 Token 无效/过期,应返回 WWW-Authenticate 头;记住「不知道你是谁」
402
Payment Required · 需要付费
场景:保留码,实践中常用于付费墙、订阅过期的业务提示
403
Forbidden · 已认证但无权限
场景:登录了但角色权限不够、IP 被封禁;重新登录也没用,记住「知道你是谁但不许」
404
Not Found · 资源不存在
场景:URL 写错或资源已删除;别用它掩盖服务端异常,出错就该抛 5xx
405
Method Not Allowed · 方法不允许
场景:对只读接口发 POST;应返回 Allow 头说明支持的方法
406
Not Acceptable · 无法满足 Accept 要求
场景:客户端要求的 Content-Type 服务端不支持,检查 Accept 头
407
Proxy Authentication Required · 需要代理认证
场景:公司内网代理要求先完成代理认证才能放行
408
Request Timeout · 请求超时
场景:客户端发请求太慢,服务器等待超时主动断开连接
409
Conflict · 请求冲突
场景:并发编辑互相覆盖、批量操作部分冲突、版本号不一致时使用
410
Gone · 资源已永久删除
场景:活动页下线用 410 而非 404,明确告诉搜索引擎删掉索引
411
Length Required · 需要 Content-Length
场景:服务端要求显式长度,不接受不定长的分块上传
412
Precondition Failed · 前置条件失败
场景:If-Match/If-Unmodified-Since 条件不满足,乐观锁冲突常用
413
Payload Too Large · 请求体过大
场景:上传文件超过服务器限制(如 Nginx 的 client_max_body_size)
414
URI Too Long · URL 过长
场景:GET 请求把大量参数拼进 URL 导致超限,应改用 POST 请求体
415
Unsupported Media Type · 媒体类型不支持
场景:发送 XML 但接口只收 JSON,检查 Content-Type 是否正确
416
Range Not Satisfiable · 范围请求不可满足
场景:Range 请求的起止位置超出资源实际大小
417
Expectation Failed · 期望失败
场景:服务器无法满足 Expect: 100-continue 的要求
418
I'm a teapot · 我是一个茶壶
场景:1998 年愚人节彩蛋;有服务用它俏皮回应「我知道你在扫描我」,正式项目勿用
421
Misdirected Request · 请求被发错服务器
场景:HTTP/2 连接复用到了错误的主机(SNI 不匹配)
422
Unprocessable Entity · 语法对但语义错误
场景:表单校验失败(字段格式对但值不合法),RESTful API 高频使用
423
Locked · 资源被锁定
场景:WebDAV 资源被其他会话锁定,当前操作无法进行
425
Too Early · 请求过早
场景:重放保护:时间戳过早的请求可能属于重放攻击,拒绝处理
426
Upgrade Required · 需要升级协议
场景:要求客户端切换到 TLS/HTTP2/WebSocket 后再访问
428
Precondition Required · 需要前置条件
场景:要求请求带 If-Match 等条件头,防止「丢失更新」
429
Too Many Requests · 请求太频繁
场景:触发限流时返回,应带 Retry-After 头告知等待时间
431
Request Header Fields Too Large · 请求头过大
场景:Cookie 堆积过多撑爆请求头,清理站点 Cookie 后重试
451
Unavailable For Legal Reasons · 因法律原因不可用
场景:版权下架、监管合规屏蔽,如仓库被 DMCA 下架
500
Internal Server Error · 服务器内部错误
场景:未捕获异常、代码 Bug、配置错误;最通用的服务端错误
501
Not Implemented · 功能未实现
场景:服务器不支持该 HTTP 方法,如只实现了 GET 的简易服务收到 POST
502
Bad Gateway · 网关错误
场景:Nginx 反代时后端(PHP-FPM/Node)崩溃或返回非法响应;排查后端进程与错误日志
503
Service Unavailable · 服务不可用
场景:服务器过载或维护中,可返回 Retry-After;负载均衡摘除节点时也用它
504
Gateway Timeout · 网关超时
场景:反代等待后端响应超时;重点查慢 SQL、外部接口卡死、上游超时配置
505
HTTP Version Not Supported · HTTP 版本不支持
场景:客户端使用了服务器不支持的 HTTP 版本
506
Variant Also Negotiates · 变体协商异常
场景:透明内容协商配置错误导致的内部错误,极少见到
507
Insufficient Storage · 存储不足
场景:WebDAV 写入时服务器磁盘空间不够
508
Loop Detected · 检测到无限循环
场景:WebDAV 绑定形成环,处理时触发了死循环保护
511
Network Authentication Required · 需要网络认证
场景:公共 WiFi 门户登录页劫持响应时使用,引导用户先完成网络认证
日常开发里真正高频的状态码只有十几个,但一到排查线上问题,502 和 504 分不清、301 和 302 不知道该返回哪个、401 和 403 傻傻搞反的情况比比皆是。问题不在记性,而在状态码是按语义设计的,不是按数字:同为重定向,301/308 永久、302/307 临时,后者还严格保持请求方法;同为 5xx,502 是后端给了坏响应、504 是后端压根没响应。
这份速查表把 1xx 信息响应、2xx 成功、3xx 重定向、4xx 客户端错误、5xx 服务端错误共 58 个常用状态码整理成 5 大类,每个都写清「是什么」和「什么时候用」:断点续传对应 206、协商缓存命中对应 304、限流触发对应 429、PRG 模式跳转对应 303……遇到不确定的状态码,直接搜索数字或中英文关键词即可。
所有内容为静态文档,无任何网络请求,可离线使用。建议把 401/403、301/302/307/308、502/503/504 这三组易混组合重点看一遍,接口设计与线上排障时能少走很多弯路。
429)或中英文关键词(如 限流、timeout),列表会实时过滤出相关条目。429 Too Many Requests)即被复制。Retry-After 响应头,告诉客户端等待多少秒再重试。Location 头;更新用 200 或 204;参数校验语义错误用 422 而非 400。401 Unauthorized 本意是「未认证」:客户端没有身份凭证或凭证无效/过期,应配合 WWW-Authenticate 响应头提示如何认证,客户端通常需要重新登录或刷新 Token。403 Forbidden 是「已认证但无权限」:服务器知道你是谁,但你的角色无权访问该资源,重新登录也没用。记法:401 不知道你是谁,403 知道你是谁但不许。Range: bytes=xxxx-yyyy 请求头向服务器只请求缺失的那一段数据,服务器返回 206 Partial Content 和对应的 Content-Range。这也是断点续传、大文件分片下载的原理。如果请求的范围超出了文件实际大小,服务器会返回 416 Range Not Satisfiable。Retry-After;504:网关在超时时间内没等到后端响应,通常是慢 SQL、外部接口卡死、超时配置过短。排查顺序:先看 502 的后端错误日志,504 则重点查慢查询与上游超时配置。Location 头指向新资源地址。不要创建/更新成功还返回 201/200 之外让人误解的码,也不要用 404 表达「删过了再删一次」。审核通过后就会展示在留言板上,稍安勿躁~
还没有留言,来抢沙发吧!