目录
- [HTTP 常见状态码(400/500 系列)整理](#HTTP 常见状态码(400/500 系列)整理)
-
- 文档说明
- [一、400 系列状态码(客户端错误)](#一、400 系列状态码(客户端错误))
- [二、500 系列状态码(服务器端错误)](#二、500 系列状态码(服务器端错误))
HTTP 常见状态码(400/500 系列)整理
文档说明
这份文档专门整理了 HTTP 协议里的 400 和 500 两类常见报错码,把每个报错码的具体意思、实际工作中会碰到的场景都讲清楚了,不管是开发、运维还是前端对接接口的人,都能靠它快速找到问题根源。
一、400 系列状态码(客户端错误)
400 系列状态码表示客户端的请求存在语法错误、权限问题或资源不存在等问题,导致服务器无法正常处理请求,错误根源通常在客户端侧。
| 状态码 | 状态码名称 | 核心含义 | 典型业务场景 |
|---|---|---|---|
| 400 | Bad Request(错误请求) | 服务器无法理解客户端的请求,请求存在语法或参数层面的无效性 | 1. 提交的 JSON/XML 数据格式错误(如缺少引号、括号不闭合) 2. URL 包含非法字符(如中文未编码、特殊符号乱码) 3. 请求参数缺失或格式不合法(如手机号位数不足、日期格式错误) 4. 请求头格式错误(如 Content-Type 字段值不规范) |
| 401 | Unauthorized(未授权) | 请求需要用户身份验证,客户端未提供有效凭证,或凭证已失效 | 1. 未登录用户直接访问需登录的接口(如个人中心、订单查询接口) 2. 登录后的 Token/JWT 过期、签名错误或被篡改 3. 接口请求头未携带 Authorization 验证字段 4. 账号密码输入错误,身份验证未通过 |
| 403 | Forbidden(禁止访问) | 服务器已理解请求,但因权限策略明确拒绝处理,且补充凭证也无法访问 | 1. 普通用户尝试访问管理员专属接口(如后台用户管理、系统配置接口) 2. 服务器配置禁止特定 IP/地区访问某资源 3. 账号被封禁后尝试发起业务请求 4. 访问需要特定权限(如读写权限)但用户未具备的资源 |
| 404 | Not Found(未找到) | 服务器无法找到请求的目标资源,是最常见的客户端错误之一 | 1. URL 路径拼写错误(如将 /api/user 写成 /api/usr) 2. 请求的资源已被删除(如已下架的商品详情、已删除的文章) 3. 服务器未配置对应路由(如新接口未注册到网关) 4. 静态资源(图片、JS/CSS 文件)路径错误或文件已丢失 |
| 405 | Method Not Allowed(方法不允许) | 客户端使用的 HTTP 请求方法不被目标资源支持 | 1. 用 POST 方法访问仅开放 GET 的数据查询接口(如商品列表查询) 2. 用 DELETE 方法访问不支持删除操作的资源(如公共公告接口) 3. 用 PUT 方法提交数据,但接口仅支持 POST 接收表单 4. 注:HTTP 协议规定 GET、HEAD 方法不可被服务器禁止 |
| 408 | Request Timeout(请求超时) | 客户端未在服务器设定的时间内完成完整请求的发送,服务器主动断开连接 | 1. 网络卡顿导致请求数据包发送中断(如弱网环境下提交大表单) 2. 客户端与服务器的连接长时间闲置,触发服务器超时机制 3. 浏览器预连接机制异常,未及时发送请求正文 |
| 409 | Conflict(请求冲突) | 请求与目标资源的当前状态存在冲突,无法执行操作 | 1. 创建用户时,提交的用户名/手机号已被注册 2. 上传文件时,客户端上传的文件版本低于服务器已存储的版本 3. 并发修改同一资源(如两人同时编辑同一份文档并提交) 4. 数据库事务提交时出现主键冲突、唯一索引冲突 |
| 413 | Payload Too Large(请求实体过大) | 客户端提交的请求体(如上传文件、表单数据)超过服务器设定的上限 | 1. 上传几 GB 的大文件,但服务器限制单文件最大 100MB 2. 提交的表单包含大量数据(如批量导入上千条数据),超出接口接收阈值 3. 图片/视频上传时未压缩,文件体积超出网关限制 |
| 414 | URI Too Long(请求URI过长) | 客户端请求的 URL 长度超过服务器的处理上限 | 1. 将大量查询参数直接拼接在 URL 中(如一次性传递上百个商品 ID 作为查询条件) 2. URL 中携带过长的加密字符串或 Base64 编码内容 3. 恶意构造超长 URL 尝试触发服务器解析漏洞 |
| 415 | Unsupported Media Type(媒体类型不支持) | 服务器不支持请求体的媒体类型,无法处理对应格式的数据 | 1. 接口要求接收 application/json 数据,但客户端提交 text/plain 纯文本 2. 上传的文件格式不被支持(如接口仅接收 jpg/png 图片,却上传 webp 格式) 3. 请求头 Content-Type 与实际请求体格式不匹配(如标注为 JSON 实际是表单) |
| 429 | Too Many Requests(请求过于频繁) | 客户端在短时间内发送了过多请求,触发服务器限流/熔断机制 | 1. 调用第三方 API 时未控制频率,超出接口的 QPS 限制 2. 爬虫程序高频次访问网站,未遵守 robots 协议和访问间隔 3. 同一用户短时间内重复提交表单、刷新接口,触发防刷策略 4. 响应头通常会携带 Retry-After 字段,提示重试时间 |
二、500 系列状态码(服务器端错误)
500 系列状态码表示服务器在处理合法请求的过程中发生异常,错误根源通常在服务器侧,与客户端请求的合法性无关。
| 状态码 | 状态码名称 | 核心含义 | 典型业务场景 |
|---|---|---|---|
| 500 | Internal Server Error(内部服务器错误) | 服务器在处理请求时发生未预期的异常,是通用的服务器错误标识 | 1. 后端代码抛出未捕获的异常(如 Java 的空指针、Python 的索引越界) 2. 数据库连接池耗尽、SQL 语句语法错误或执行超时 3. 服务器内存/CPU 资源耗尽,无法创建新的线程处理请求 4. 第三方依赖服务(如缓存、消息队列)故障导致接口调用失败 |
| 501 | Not Implemented(未实现) | 服务器不支持客户端请求的功能或 HTTP 方法,无法完成请求 | 1. 客户端使用了服务器未实现的 HTTP 方法(如 PATCH、CONNECT 方法) 2. 接口标注了某功能(如批量删除),但实际未开发完成 3. 服务器软件版本过低,不支持新的 HTTP 协议特性(如 HTTP/3) |
| 502 | Bad Gateway(网关错误) | 网关/代理服务器从后端服务器接收到无效的响应,无法正常转发 | 1. 后端服务(如 Tomcat、Node.js 服务)已崩溃或未启动,网关请求时仅收到断开信号 2. 网关与后端服务的通信协议不匹配(如网关用 HTTP,后端强制 HTTPS) 3. 后端服务返回非标准 HTTP 响应(如二进制乱码、无效响应头) 4. 负载均衡器配置错误,指向了无效的后端节点 |
| 503 | Service Unavailable(服务不可用) | 服务器暂时无法提供服务,通常因过载或维护导致,可恢复 | 1. 服务器 CPU/内存打满,请求队列排满无法处理新请求 2. 服务处于发布/维护阶段,暂时下线(如凌晨进行版本更新) 3. 负载均衡器将故障节点标记为"不可用"(如健康检查失败) 4. 响应头通常携带 Retry-After 字段,提示服务恢复时间 |
| 504 | Gateway Timeout(网关超时) | 网关/代理服务器在规定时间内未收到后端服务器的响应 | 1. 后端接口处理耗时过长(如复杂报表查询、大文件导出,超过网关超时阈值) 2. 网关与后端服务的网络链路拥堵或中断(如防火墙阻断长连接、跨机房网络延迟高) 3. 后端服务出现线程死锁、阻塞,无法返回响应结果 4. 数据库慢查询导致接口响应超时,网关未等到返回值 |
| 505 | HTTP Version Not Supported(HTTP版本不支持) | 服务器不支持客户端请求使用的 HTTP 协议版本 | 1. 客户端用 HTTP/2 协议请求仅支持 HTTP/1.1 的老旧服务器 2. 网关配置了 HTTP/3 监听,但后端服务不兼容该版本 3. 客户端自定义了非标准 HTTP 版本,服务器无法识别 |