HTTP 状态码体系 (AI)
HTTP状态码分为5大类:1xx(信息响应)表示请求已接收;2xx(成功)表示请求成功完成;3xx(重定向)需要进一步操作;4xx(客户端错误)请求有误或被拒绝;5xx(服务器错误)服务器处理失败。常见状态码包括200(成功)、301/302(重定向)、400(请求错误)、401(未授权)、403(禁止访问)、404(未找到)、500(服务器内部错误)等。关键区别:4xx是客户端问题,5xx是服务
·
一、总览:状态码的 5 个大类(第一位数字)
|
分类
|
范围
|
类别名称
|
核心含义
|
|
1xx
|
100–101
|
信息响应
|
请求已被接收,继续处理
|
|
2xx
|
200–206
|
成功
|
请求成功完成
|
|
3xx
|
300–308
|
重定向
|
需要进一步操作(如跳转)
|
|
4xx
|
400–451
|
客户端错误
|
请求有误或被拒绝(问题出在客户端)
|
|
5xx
|
500–511
|
服务器错误
|
服务器未能完成有效请求(问题出在服务器)
|
记忆技巧:
1xx:告诉你“收到,还在处理”。
2xx:“一切 OK”。
3xx:“去别处找”。
4xx:“你(客户端)错了”。
5xx:“我(服务器)错了”。
二、详细分类与常见状态码
1. 1xx 信息响应
|
状态码
|
短语
|
含义
|
|
100
|
Continue
|
客户端应继续发送请求(用于大请求体,客户端先发部分头部,服务器返回 100 表示可以继续发 body)
|
|
101
|
Switching Protocols
|
服务器同意切换协议(如从 HTTP 升级到 WebSocket)
|
实际开发中很少直接处理 1xx,但了解有助于理解 HTTP 通信细节。
2. 2xx 成功
|
状态码
|
短语
|
含义
|
|
200
|
OK
|
最常⻅
。请求成功,返回内容
|
|
201
|
Created
|
请求成功且服务器创建了新资源(通常用于 POST 或 PUT 后)
|
|
202
|
Accepted
|
请求已接受,但尚未处理完成(适用于异步任务)
|
|
204
|
No Content
|
请求成功,但响应体中无内容(常用于 DELETE 或需要刷新的场景)
|
|
206
|
Partial Content
|
返回部分内容,用于断点续传或范围请求(如视频拖拽)
|
3. 3xx 重定向
|
状态码
|
短语
|
含义
|
|
301
|
Moved Permanently
|
永久重定向
,资源新 URL 固定,以后请使用新地址(搜索引擎会更新索引)
|
|
302
|
Found (Previously "Moved Temporarily")
|
临时重定向
,资源暂时换地方,下次还用旧 URL
|
|
303
|
See Other
|
通常用于 POST 后重定向到 GET 结果页面(防止重复提交)
|
|
304
|
Not Modified
|
缓存相关
。资源未变化,请直接使用缓存
|
|
307
|
Temporary Redirect
|
类似 302,但
不允许改变请求方法
(如 POST 不能变成 GET)
|
|
308
|
Permanent Redirect
|
类似 301,但
不允许改变请求方法
|
301 vs 302 要点:
301:永久,浏览器/搜索引擎会更新书签。
302:临时,下次仍访问原 URL。
4. 4xx 客户端错误(重点记忆)
|
状态码
|
短语
|
含义
|
典型场景
|
|
400
|
Bad Request
|
请求语法错误或无法理解
|
参数格式不对、JSON 解析失败
|
|
401
|
Unauthorized
|
缺少认证
,通常需要登录
|
未提供 token,或 token 过期
|
|
403
|
Forbidden
|
拒绝访问
,即使认证了也无权限
|
普通用户试图访问管理员页面
|
|
404
|
Not Found
|
资源不存在
|
URL 输错、接口已删除
|
|
405
|
Method Not Allowed
|
方法不被允许
|
对接口用了 DELETE,但它只支持 GET
|
|
408
|
Request Timeout
|
请求超时
|
客户端发送请求太慢,服务器放弃等待
|
|
413
|
Payload Too Large
|
请求体过大
|
上传文件超过服务器限制
|
|
414
|
URI Too Long
|
URL 过长
|
GET 请求拼接了大量参数
|
|
415
|
Unsupported Media Type
|
不支持的媒体类型
|
发 JSON 但接口只接受 XML
|
|
429
|
Too Many Requests
|
请求过于频繁(限流)
|
API 速率限制触发
|
|
451
|
Unavailable For Legal Reasons
|
因法律原因不可访问
|
版权、地区封锁
|
401 vs 403 核心区别
401:未认证。服务器说:“你是谁?请先证明身份。” → 可重新登录后重试。
403:已认证但无权。服务器说:“我知道你是谁,但你不被允许进入。” → 即使重试也无用(除非改权限)。
5. 5xx 服务器错误
|
状态码
|
短语
|
含义
|
典型场景
|
|
500
|
Internal Server Error
|
通用服务器内部错误
|
代码抛出未捕获的异常、空指针、数据库连接失败
|
|
501
|
Not Implemented
|
服务器不支持请求的功能
|
请求了一个未实现的 HTTP 方法
|
|
502
|
Bad Gateway
|
网关/代理
从上游收到无效响应
|
反向代理无法连接到后端服务
|
|
503
|
Service Unavailable
|
服务器暂时不可用(过载或停机)
|
流量暴增、正在维护、容器未就绪
|
|
504
|
Gateway Timeout
|
网关/代理
等待上游响应超时
|
后端服务响应太慢,代理等不及了
|
|
505
|
HTTP Version Not Supported
|
HTTP 版本不支持
|
客户端用了 HTTP/2,服务器只支持 1.1
|
502 vs 504:
502:上游返回了错误响应(如连接拒绝、协议错误)。
504:上游根本没响应(超时)。
三、完整状态码快速参考表(常用部分)
|
状态码
|
短语
|
简要场景
|
|
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
|
资源不存在
|
|
405
|
Method Not Allowed
|
方法不允许
|
|
429
|
Too Many Requests
|
频率超限
|
|
500
|
Internal Server Error
|
服务器代码报错
|
|
502
|
Bad Gateway
|
网关到后端出错
|
|
503
|
Service Unavailable
|
服务不可用(过载/维护)
|
|
504
|
Gateway Timeout
|
网关超时
|
四、小技巧与易混淆点总结
- 4xx:客户端请求有问题 → 改完代码或参数就能好。
- 5xx:服务器有问题 → 一般用户无法解决,需要运维或开发介入。
- 304 不是错误,是缓存有效。
- 302 与 307:307 更严格,不会改变请求方法(例如 POST 重定向后仍然是 POST)。
- 403 比 401 更“绝”,认证后也不行。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)