HTTP 状态码速查表
1xx 到 5xx 常用状态码的含义与出现场景,以及 301/302、401/403、502/503/504 这几组最容易搞混的到底差在哪。
HTTP 状态码是服务器对一次请求的回应。三位数字里,第一位决定了响应的类别:1xx 表示请求已收到、还在处理;2xx 表示成功;3xx 表示得换个地方取;4xx 表示请求方有问题;5xx 表示服务端自己出了问题。记住这条分类规则,绝大多数状态码都不需要死记。
真正容易出错的是那些长得像、含义却完全不同的组合:301 和 302 都叫重定向,但对搜索引擎的意义差别很大;401 和 403 都表示「不能访问」,可一个该去登录、一个登录了也没用。下面先按类别列出常用状态码,最后专门辨析这几组易混项。
11xx:信息响应(请求已收到,继续处理)
1xx 是临时性响应,表示服务器已经收到请求的开头,正在等后续内容或准备切换协议。这类状态码在日常浏览中几乎看不到,主要出现在调试和长连接场景。
| 状态码 | 含义 | 典型场景 |
|---|---|---|
100 | Continue | 客户端发送 Expect: 100-continue 时,服务器同意继续发送请求体 |
101 | Switching Protocols | WebSocket 握手成功,协议由 HTTP 升级为 ws / wss |
102 | Processing | WebDAV 场景中表示请求已受理但尚未处理完成 |
103 | Early Hints | 提前把关键资源提示给浏览器,配合 preload 加速首屏渲染 |
22xx:成功
2xx 表示请求被正常处理。要注意「成功」不等于「有内容返回」——204 和 206 是两类特殊的成功:一个明确表示没有响应体,一个只返回资源的一部分。
| 状态码 | 含义 | 典型场景 |
|---|---|---|
200 | OK | 标准成功响应,返回完整内容 |
201 | Created | 资源创建成功,响应头 Location 通常带新资源地址(POST 后常见) |
202 | Accepted | 请求已接受但尚未处理完,适合异步任务(如提交转码、发送队列消息) |
204 | No Content | 成功但响应体为空,常用于 DELETE 成功、前端只需知道结果的场景 |
206 | Partial Content | 按 Range 请求返回部分内容,断点续传与视频拖拽播放依赖它 |
33xx:重定向(这里最容易用错)
3xx 表示客户端需要再发一次请求到别处。四个重定向状态码的区别只有两个维度:是永久还是临时、重发时要不要保持原来的请求方法和请求体。拆开看就很清楚。
| 状态码 | 含义 | 方法与请求体 | 典型场景 |
|---|---|---|---|
301 | Moved Permanently | 可能被改为 GET | 站点换域名、http 跳 https。永久跳转,搜索引擎会把权重转移到新地址 |
302 | Found | 可能被改为 GET | 临时跳转,如未登录跳登录页。永久迁移误用 302 会导致权重不转移 |
303 | See Other | 强制改为 GET | POST 提交后跳到结果页,避免用户刷新时重复提交 |
307 | Temporary Redirect | 保持原方法与请求体 | 临时跳转但必须保留 POST 等方法,302 的严格版本 |
308 | Permanent Redirect | 保持原方法与请求体 | 永久跳转且保留请求方法,301 的严格版本 |
44xx:客户端错误
4xx 表示问题出在请求方:地址错了、没带凭证、权限不够、参数不合法。这类错误通常会直接展示给用户,所以 403 与 404 的取舍、429 的重试策略都很值得注意。
| 状态码 | 含义 | 何时出现 |
|---|---|---|
400 | Bad Request | 请求格式有误或参数不合法,服务端无法解析 |
401 | Unauthorized | 未提供或提供了无效的身份凭证,需要先登录(名字叫 Unauthorized,实际是「未认证」) |
402 | Payment Required | 预留状态码,部分场景用来表示余额不足或需要付费 |
403 | Forbidden | 身份已识别但无权访问该资源,重新登录也没用 |
404 | Not Found | 资源不存在,或出于安全考虑不暴露资源是否存在 |
405 | Method Not Allowed | 地址存在但不支持该请求方法(如对只读接口发 POST) |
406 | Not Acceptable | 服务端无法提供符合 Accept 头要求的格式 |
408 | Request Timeout | 客户端太久没把请求发完,服务器主动断开 |
409 | Conflict | 请求与资源当前状态冲突,如多人并发编辑同一条记录 |
410 | Gone | 资源曾经存在但已被永久删除,语义上比 404 更明确 |
412 | Precondition Failed | If-Match / If-Unmodified-Since 等前置条件不成立 |
413 | Payload Too Large | 请求体超过服务端限制,上传大文件时常见 |
414 | URI Too Long | URL 过长,常见于把大量数据塞进查询字符串 |
415 | Unsupported Media Type | 请求体的媒体类型不被支持,如该传 JSON 却传了表单 |
418 | I'm a teapot | 愚人节玩笑状态码,如今被部分框架保留作为彩蛋 |
422 | Unprocessable Entity | 格式正确但语义校验失败,表单校验错误常用它 |
429 | Too Many Requests | 触发限流,响应头通常带 Retry-After 告知何时可重试 |
431 | Request Header Fields Too Large | 请求头过大,常见于 Cookie 堆积过多 |
451 | Unavailable For Legal Reasons | 因法律要求无法提供,如版权或合规原因下架 |
55xx:服务端错误
5xx 表示服务器承认自己出了问题。对使用者来说,这类错误重试往往有意义;对开发者来说,502 和 504 几乎必然指向反向代理与后端之间的链路,排查方向非常明确。
| 状态码 | 含义 | 何时出现 |
|---|---|---|
500 | Internal Server Error | 服务端未捕获的异常,最常见但信息量最少 |
501 | Not Implemented | 服务器不支持该请求方法或功能 |
502 | Bad Gateway | 作为网关的服务器从上游收到无效响应,通常是后端进程崩溃或没启动 |
503 | Service Unavailable | 服务暂时不可用,多为过载或维护中,常带 Retry-After |
504 | Gateway Timeout | 网关等待上游响应超时,说明后端在运行但太慢 |
505 | HTTP Version Not Supported | 不支持请求所用的 HTTP 协议版本 |
507 | Insufficient Storage | 服务器存储空间不足,WebDAV 场景常见 |
511 | Network Authentication Required | 需要先完成网络认证,如公共 Wi-Fi 的登录门户 |
6五组最容易搞混的状态码
下面这几组的共同点是「名字或数字看着像,处理方式却完全相反」。判断时不要看数字大小,看它们各自回答的问题是哪一个。
- `301` vs `302`
- 都是重定向,差异在「永久 vs 临时」:301 会让搜索引擎把权重转移到新地址,302 不会。永久迁移用 301,维护期临时跳转用 302——用反了会直接影响搜索排名。
- `302` vs `307`
- 302 在历史实现中允许把 POST 改成 GET,307 则明确要求保持原方法和请求体。需要保留 POST 时用 307。
- `401` vs `403`
- 401 = 还没证明你是谁(该弹登录框);403 = 已经知道你是谁,但你没有权限(弹登录框也没用)。
- `404` vs `410`
- 404 表示「现在没找到」(以后可能还会有),410 表示「曾经有,已永久删除」。搜索引擎对 410 的下线处理更快。
- `502` vs `503` vs `504`
- 502 是接到了后端但响应无效(后端可能挂了);503 是服务本身明确表示不可用(过载或维护);504 是等后端太久(后端在跑但慢)。
看完就能用的站内工具
全部工具总览 →在线查询 HTTP 状态码含义与常见成因,覆盖 1xx-5xx 共 60+ 常见状态码,支持关键词搜索与分类筛选,纯浏览器本地处理
在线检测 URL 重定向链条的跳数、跨域跳转与循环死循环,输出最终落地 URL 与逐跳明细
在线解析 HTTP 响应头,逐项检查 HSTS、CSP、X-Frame-Options 等八项安全头是否齐全,同时提示 Server、X-Powered-By 等信息泄露头与缓存策略配置,并给出安全评分,粘贴响应头即可出结果。
生成 Cache-Control 响应头,支持 public 与 private、max-age、s-maxage、immutable、must-revalidate 等指令,附常用资源类型的缓存天数换算。
在线生成curl命令,支持GET/POST/PUT/DELETE等方法,自定义Header、Body、认证(Basic/Bearer/API Key),纯本地处理
关于「HTTP 状态码速查表」的常见问题
301 和 302 用错了会有什么后果?
永久迁移误用 302,搜索引擎会认为原地址仍然有效,权重不会转移到新地址,结果是原页面继续占据搜索结果、新地址长期不被收录,排名缓慢下滑。反过来,临时跳转用了 301,搜索引擎会把原地址从索引中移除并把权重转给一个临时地址,等跳转撤销后又得从头积累。判断标准很简单:这个跳转半年后还会存在吗?会,就用 301。
收到 502 和 504 该怎么排查?
两者都指向反向代理与后端之间的链路,但方向不同。502 说明代理拿到了无效响应,通常是后端进程崩溃、没启动或端口配错——先确认后端进程是否存活。504 说明后端在运行但响应太慢,代理等超时了——去查后端日志里的慢查询、外部接口调用和数据库连接。简单记:502 是「没接到」,504 是「接到了但太慢」。
404 和 410 对搜索引擎有区别吗?
有。404 表示「现在没找到」,搜索引擎会保留一段时间继续观察;410 明确表示「曾经存在且已永久删除」,搜索引擎会更快地把 URL 从索引中移除。大批量下线页面时用 410 更利于快速清理索引;但如果只是临时下线、未来可能恢复,用 404 更合适。
为什么有时候接口返回 200,业务却是失败的?
这是接口设计取向的问题。部分 API 把「请求处理完成」和「业务成功」分开:HTTP 200 表示服务器正常处理了这次请求,业务结果放在响应体里(如 {'code': 1001, 'msg': '余额不足'})。这种设计在支付、电商类接口里很常见。所以判断一次调用是否成功,不能只看状态码,还要看响应体里的业务码——这也是排查问题最容易踩的坑。
继续查:相关内容
全部速查 →内容说明:本页速查数据由本站自行整理,事实性内容以对应官方规范与文档为准,未复制第三方速查表或百科的表述。数据最后核对日期:2026-10-05。若发现错误或已更新的标准,欢迎通过页脚反馈入口告知。
速查在线工具箱