HTTP 状态码清单大全

HTTP 状态码清单大全

目录


HTTP 状态码总览表

下表按类别列出文档中涉及的所有 HTTP 状态码,便于快速查阅。

状态码 短语 类别 简要含义
100 Continue 1xx 信息 请继续发送请求体
101 Switching Protocols 1xx 信息 协议切换(如升级到 WebSocket)
103 Early Hints 1xx 信息 预发送部分响应头(如 Link 预加载)
200 OK 2xx 成功 请求成功
201 Created 2xx 成功 资源已创建
202 Accepted 2xx 成功 已接受,尚未处理完成
204 No Content 2xx 成功 成功且无返回体
206 Partial Content 2xx 成功 部分内容(断点续传等)
301 Moved Permanently 3xx 重定向 永久重定向
302 Found 3xx 重定向 临时重定向
303 See Other 3xx 重定向 用 GET 访问另一 URI
304 Not Modified 3xx 重定向 未修改,使用缓存
307 Temporary Redirect 3xx 重定向 临时重定向,不改变请求方法
308 Permanent Redirect 3xx 重定向 永久重定向,不改变请求方法
400 Bad Request 4xx 客户端错误 请求有语法/格式错误
401 Unauthorized 4xx 客户端错误 需要身份认证
403 Forbidden 4xx 客户端错误 拒绝执行(无权限)
404 Not Found 4xx 客户端错误 资源未找到
405 Method Not Allowed 4xx 客户端错误 请求方法不被允许
406 Not Acceptable 4xx 客户端错误 无法返回可接受的内容
408 Request Timeout 4xx 客户端错误 请求超时
409 Conflict 4xx 客户端错误 请求与当前资源状态冲突
410 Gone 4xx 客户端错误 资源已永久删除
413 Payload Too Large 4xx 客户端错误 请求体过大
414 URI Too Long 4xx 客户端错误 URI 过长
429 Too Many Requests 4xx 客户端错误 请求过多(限流)
500 Internal Server Error 5xx 服务器错误 服务器内部错误
501 Not Implemented 5xx 服务器错误 功能未实现
502 Bad Gateway 5xx 服务器错误 网关收到无效上游响应
503 Service Unavailable 5xx 服务器错误 服务暂时不可用
504 Gateway Timeout 5xx 服务器错误 网关等待上游超时
507 Insufficient Storage 5xx 服务器错误 存储空间不足

概述

**HTTP 状态码(Status Code)**是服务器对客户端请求的响应状态的三位数字代码,对 Web 开发和调试至关重要。状态码由三位数字组成,第一位数字定义响应的类别。

本文档整理从 1xx 到 5xx 的常用 HTTP 状态码清单,并说明规范来源与查阅方式。内容基于 IETF RFC 及常见实践整理,供开发与排查参考。


HTTP 状态码分类概览

复制代码
        第一位数字 → 类别含义

  1xx ── 信息性:请求已接收,继续处理
  2xx ── 成功:请求已成功被接收、理解并接受
  3xx ── 重定向:需要客户端进一步操作才能完成请求
  4xx ── 客户端错误:请求有误或无法满足(责任在客户端)
  5xx ── 服务器错误:服务器处理请求时出错(责任在服务器)
类别 范围 含义
1xx 信息性 请求已被接收,继续处理
2xx 成功 请求已成功被服务器接收、理解并接受
3xx 重定向 需要客户端采取进一步操作才能完成请求
4xx 客户端错误 请求有误或服务器拒绝处理(客户端责任)
5xx 服务器错误 服务器在处理请求时发生错误(服务器责任)

一、1xx 信息性状态码 (Informational)

表示请求已被接收,需要继续处理。日常开发中较少直接使用。

状态码 短语 含义
100 Continue 客户端应继续发送请求体。服务器已收到请求头,允许客户端继续发送 body(常用于 Expect: 100-continue)。
101 Switching Protocols 服务器根据客户端的升级请求切换协议(如从 HTTP 升级到 WebSocket)。
103 Early Hints Link 头一起使用,允许在最终响应前先返回部分响应头,用于预加载等优化。

典型流程(100 Continue)

复制代码
客户端                          服务器
   │                               │
   │  POST /api (Expect: 100-continue)
   │  Headers only ───────────────>│
   │                               │
   │  100 Continue                 │
   │  <────────────────────────────│
   │                               │
   │  Request Body ───────────────>│
   │                               │
   │  200 OK + Body                 │
   │  <────────────────────────────│

二、2xx 成功状态码 (Success)

表示请求已成功完成。

状态码 短语 含义
200 OK 最常用。请求成功,一般用于 GET 和 POST 的成功响应。
201 Created 请求成功且服务器创建了新资源,常用于 POST 或 PUT。
202 Accepted 请求已接受,但尚未处理完成;可能异步执行。
204 No Content 成功处理,但不返回实体内容,常用于 DELETE 或更新后无需返回 body。
206 Partial Content 成功处理了部分 GET 请求,用于断点续传、分片下载、视频流等。

常见用法对照

方法 成功时常用状态码
GET 200 OK(有内容)/ 206 Partial Content(范围请求)
POST 200 OK 或 201 Created
PUT/PATCH 200 OK 或 204 No Content
DELETE 200 OK 或 204 No Content

三、3xx 重定向状态码 (Redirection)

表示需要客户端采取进一步操作(如跳转到新 URL)才能完成请求。

状态码 短语 含义
301 Moved Permanently 永久重定向。资源已永久移动到新 URL,后续请求应使用新 URL;搜索引擎会更新索引。
302 Found 临时重定向。资源临时从另一 URI 提供;历史上不少实现会把它当 303 用(POST→GET)。
303 See Other 响应在另一 URI;用 POST 时,应改用 GET 访问该资源(防止重复提交)。
304 Not Modified 非常常见。条件 GET 未修改,可直接使用缓存;用于缓存控制。
307 Temporary Redirect 临时重定向,与 302 类似,但不允许把 POST 改成 GET。
308 Permanent Redirect 永久重定向,与 301 类似,但不允许把 POST 改成 GET。

常见混淆点

  • 301 vs 302:301 永久,搜索引擎会更新索引;302 临时,一般保留原链接。
  • 302 vs 307:307 明确禁止在重定向时改变请求方法(POST 仍为 POST)。
  • 301 vs 308:308 明确禁止在重定向时改变请求方法。

四、4xx 客户端错误状态码 (Client Error)

表示错误来自客户端(请求有误、未认证、无权限、资源不存在等)。

状态码 短语 含义
400 Bad Request 常用。请求有语法或格式错误,服务器无法理解。
401 Unauthorized 需要身份认证。注意:401 是"未认证",403 是"已认证但无权限"。
403 Forbidden 常用。服务器理解请求但拒绝执行;通常表示已认证但无权限。
404 Not Found 最著名。服务器找不到请求的资源(URL 不存在或未暴露)。
405 Method Not Allowed 该资源不支持请求中使用的方法(如对只读接口发 POST)。
406 Not Acceptable 无法根据 Accept 等头返回客户端可接受的内容。
408 Request Timeout 服务器等待请求时间过长,超时。
409 Conflict 请求与当前资源状态冲突(如并发更新冲突)。
410 Gone 资源曾存在但已永久删除;与 404 不同,410 明确表示"曾经有,现在没了"。
413 Payload Too Large 请求体超过服务器允许或能够处理的范围。
414 URI Too Long 请求的 URI 长度超过服务器能处理的限制。
429 Too Many Requests 常用。请求过于频繁,触发了限流(Rate Limit),常见于 API。

401 与 403 区别

复制代码
401 Unauthorized          403 Forbidden
─────────────────         ─────────────────
「你是谁?」               「我知道你是谁,
 未认证 / 未登录            但你不许访问」
 应返回 WWW-Authenticate    不应再提示登录

五、5xx 服务器错误状态码 (Server Error)

表示服务器在处理请求时发生错误,责任在服务端。

状态码 短语 含义
500 Internal Server Error 最著名。服务器遇到未预期错误,无法完成请求;多为后端代码或配置问题。
501 Not Implemented 服务器不支持当前请求所需的功能(如未实现的 HTTP 方法)。
502 Bad Gateway 常用。网关或代理从上游收到无效响应(如上游服务挂掉、崩溃)。
503 Service Unavailable 常用。服务暂时不可用(过载、维护等),通常为暂时状态。
504 Gateway Timeout 常用。网关或代理在等待上游响应时超时。
507 Insufficient Storage 服务器存储空间不足,无法完成请求。

网关/代理场景示意

复制代码
客户端 → [Nginx/网关] → 上游应用

502:上游返回无效响应或连接失败
504:上游在规定时间内未响应

状态码分类关系图

复制代码
                    HTTP 响应
                        │
        ┌───────────────┼───────────────┐
        │               │               │
        ▼               ▼               ▼
   ┌─────────┐    ┌─────────┐    ┌─────────┐
   │ 1xx     │    │ 2xx     │    │ 3xx     │
   │ 信息    │    │ 成功    │    │ 重定向  │
   └─────────┘    └─────────┘    └─────────┘
        │               │               │
        │               │               │
        ▼               ▼               ▼
   ┌─────────┐    ┌─────────┐
   │ 4xx     │    │ 5xx     │
   │ 客户端  │    │ 服务器  │
   │ 错误    │    │ 错误    │
   └─────────┘    └─────────┘

常见状态码速查表

开发中最常遇到的状态码可重点掌握:

状态码 短语 一句话
200 OK 成功
201 Created 创建成功
204 No Content 成功且无返回体
301 Moved Permanently 永久跳转
302 Found 临时跳转
304 Not Modified 用缓存
400 Bad Request 请求错误
401 Unauthorized 未认证
403 Forbidden 无权限
404 Not Found 未找到
429 Too Many Requests 请求过多/限流
500 Internal Server Error 服务器内部错误
502 Bad Gateway 网关错误(上游异常)
503 Service Unavailable 服务不可用
504 Gateway Timeout 网关超时

重定向状态码对比

状态码 永久/临时 是否允许改变请求方法 典型用途
301 永久 允许(很多实现会改为 GET) 域名迁移、URL 永久变更
302 临时 历史上常被改为 GET 临时跳转、登录后跳回
303 - 必须用 GET 访问新 URI POST 后防重复提交
307 临时 不允许 临时重定向且保持方法
308 永久 不允许 永久重定向且保持方法

规范文档与查阅来源

HTTP 状态码的语义由 IETF RFC 定义,以下为常用规范与查阅途径。

核心规范文档

文档 说明
RFC 9110 -- HTTP Semantics 当前最新、最权威的 HTTP 语义规范(2022),包含状态码含义、方法、头字段等。状态码章节:"6. Response Status Codes"
RFC 9112 -- HTTP/1.1 HTTP/1.1 的语法与连接管理,语义引用 RFC 9110。
RFC 9113 -- HTTP/2 HTTP/2 的帧层协议,消息语义仍遵循 RFC 9110。

历史规范(了解即可):RFC 7231(已被 RFC 9110 取代)、RFC 2616(已过时)。

查阅方式

来源 适合人群 优点 缺点
RFC 9110 协议/架构 权威、精确 篇幅大、偏技术化
IANA 状态码注册表 需要完整清单 最全、实时更新、结构化 无详细解释,仅为登记表
MDN Web Docs 所有开发者 解释清晰、示例多、易读 非官方、可能略滞后
HTTPWG Wiki 关注标准的人 信息新、准确、贴近 RFC 社区维护,普及度不如 MDN

推荐链接

实践建议

  • 日常开发与学习:优先查 MDN
  • 确认冷门状态码或官方定义:查 IANA 注册表
  • 深度研究或争议问题:查 RFC 9110 对应章节。

总结与记忆技巧

  • 2xx 开心:请求顺利,成功一类。
  • 3xx 转发:要去别处找(重定向、缓存 304)。
  • 4xx 你错了:检查请求(URL、参数、权限、限流等)。
  • 5xx 我错了:服务器或上游有问题,需运维/开发介入。

实际开发中出现频率最高的状态码通常包括:200、301/302、304、400、401、403、404、429、500、502、503、504,建议重点掌握其含义与使用场景。

代码中设置状态码示例

Node.js (Express)

javascript 复制代码
// 成功
res.status(200).json({ data: result });
res.status(201).location('/api/users/1').json({ id: 1, name: 'Alice' });
res.status(204).send();

// 客户端错误
res.status(400).json({ error: 'Invalid parameters' });
res.status(401).set('WWW-Authenticate', 'Bearer').send('Unauthorized');
res.status(403).json({ error: 'Forbidden' });
res.status(404).json({ error: 'Not Found' });
res.status(429).set('Retry-After', '60').json({ error: 'Too Many Requests' });

// 服务器错误
res.status(500).json({ error: 'Internal Server Error' });
res.status(503).json({ error: 'Service Unavailable' });

Python (Flask)

python 复制代码
from flask import jsonify

# 成功
return jsonify({"data": result}), 200
return jsonify({"id": 1}), 201
return '', 204

# 客户端错误
return jsonify({"error": "Bad Request"}), 400
return jsonify({"error": "Unauthorized"}), 401
return jsonify({"error": "Not Found"}), 404
return jsonify({"error": "Too Many Requests"}), 429

# 服务器错误
return jsonify({"error": "Internal Server Error"}), 500

本文档基于 IETF RFC 及公开技术资料整理,供开发与排查参考。

相关推荐
小白电脑技术5 小时前
如何修改电脑名称及其实际作用
运维·网络·电脑
酣大智5 小时前
TCP与UDP协议
运维·网络·网络协议·tcp/ip
汤愈韬5 小时前
DHCP Server服务器拒绝攻击、DHCP Server服务器拒绝攻击防范、端口安全
网络协议·网络安全·security
大闲在人5 小时前
使用有向莱顿算法进行供应链/物料流转网络的集群划分
网络·算法
一起养小猫8 小时前
Flutter for OpenHarmony 实战:打造天气预报应用
开发语言·网络·jvm·数据库·flutter·harmonyos
qianshang23313 小时前
SQL注入学习总结
网络·数据库·渗透
云小逸14 小时前
【网络通信】同一网段与不同网段的通信原理
网络·网络安全
zr52685544716 小时前
PCIe-PN卡(三格电子)
网络
无名的小三轮16 小时前
防火墙基础实验:智能选路下的透明DNS选路配置
网络