ZeroTool Workbench

HTTP 状态码大全

完整、可搜索的 HTTP 状态码参考手册,涵盖 1xx–5xx 所有状态码及使用说明。免费,基于浏览器。

100% 浏览器端运行 数据不离开你的设备 免费 · 无需注册

使用方法

在搜索框中输入状态码数字、名称关键字或描述,即可实时过滤列表。清空搜索框可按类别浏览全部状态码。

状态码分类

  • 1xx 信息性:临时响应——请求已收到,服务器仍在处理中。
  • 2xx 成功:请求已被接收、理解并处理完成。
  • 3xx 重定向:需要进一步操作才能完成请求。
  • 4xx 客户端错误:请求语法有误或无法完成。
  • 5xx 服务器错误:服务器无法处理有效请求。

常用状态码速览

  • 200 OK — 标准成功响应。
  • 201 Created — 新资源已创建(常见于 POST/PUT API)。
  • 204 No Content — 成功,无响应体(常见于 DELETE)。
  • 301 Moved Permanently — SEO 安全的永久重定向。
  • 400 Bad Request — 客户端发送了格式错误的数据。
  • 401 Unauthorized — 需要身份验证。
  • 403 Forbidden — 已验证但无权限。
  • 404 Not Found — 资源不存在。
  • 429 Too Many Requests — 超出请求频率限制。
  • 500 Internal Server Error — 服务器意外故障。
  • 503 Service Unavailable — 服务器宕机或过载。

API 该返回哪个状态码

场景状态码
GET 返回资源200
POST 创建了资源201,并带 Location 头
成功但没有响应体(常见于 DELETE)204
请求体不是合法 JSON 或有语法错误400
没带 token 或 token 无效401
token 有效,但用户没有权限403
资源不存在404
重复数据,例如邮箱已注册409
请求体能解析,但违反业务规则(结束日期早于开始日期)422
超出频率限制429
未处理的异常500

401 还是 403。 401 表示服务器不知道你是谁,返回 401 时必须同时带 WWW-Authenticate 头(RFC 9110 §15.5.2)。403 表示服务器知道你是谁,但不允许这个操作。如果不能暴露资源是否存在,可以用 404 代替 403(§15.5.4)。

重定向与请求方法。 由于历史原因,浏览器跟随 301 或 302 时可以把 POST 改成 GET(§15.4.2);307 和 308 必须保留方法和请求体。表单 POST 需要保持为 POST 时,用 307 或 308。

状态码配套的响应头

状态码响应头要求
201Location: /api/users/456指向新建的资源
401WWW-Authenticate: Bearer realm="api"必须
405Allow: GET, POST必须(§15.5.6)
429、503Retry-After: 60可选;秒数或 HTTP 日期(RFC 6585 §4)
304—无响应体,客户端使用缓存

在 JavaScript 中处理状态码

fetch() 遇到 4xx、5xx 不会 reject,只有网络错误才会,所以要检查 res.ok(200–299 时为 true)或 res.status:

const res = await fetch('/api/orders', { method: 'POST', body });
if (res.status === 401) return redirectToLogin();
if (res.status === 429) {
  const wait = Number(res.headers.get('Retry-After') ?? 60);
  return retryAfter(wait);
}
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const order = await res.json();

限制

  • 收录 61 个注册状态码。 列表按 IANA 注册表整理。只有某个产品使用的状态码(如 nginx 的 499、Cloudflare 的 520–526)不在列表中。
  • 两个状态码用的是旧名称。 列表中是 413 Payload Too Large 和 422 Unprocessable Entity,RFC 9110 已改名为 Content Too Large 和 Unprocessable Content。
  • 说明只有英文。 各语言页面上的名称和说明都是英文。搜索匹配状态码、名称或英文说明中的词,例如搜「重定向」没有结果,要搜 redirect。

FAQ

HTTP 状态码各范围的含义是什么?

1xx = 信息性(请求已收到,继续处理);2xx = 成功(请求已完成);3xx = 重定向(需要进一步操作);4xx = 客户端错误(请求有误、资源不存在、未授权);5xx = 服务器错误(服务器无法处理有效请求)。

301 和 302 有什么区别?

301(永久移动)告知浏览器和搜索引擎更新记录——资源已永久迁移。302(临时重定向)是临时跳转,客户端后续仍应使用原始 URL。

什么时候用 404,什么时候用 410?

如果资源不存在且不确定是否会恢复,使用 404 Not Found。如果确定资源已永久删除且不会恢复,使用 410 Gone——这会通知搜索引擎将其从索引中移除。

为什么 429 对 API 很重要?

429(请求过多)是限流的标准响应码。客户端应遵守 Retry-After 响应头,并实现指数退避以避免持续轰炸服务器。