HTTP 状态码是服务器对客户端请求的响应标识,用于表示请求的处理结果

以下是完整的 HTTP 状态码分类和常见状态码详解:

一、状态码分类(5大类)

分类 范围 描述 常见场景
1xx 100-199 信息性响应 请求已被接收,继续处理
2xx 200-299 成功响应 请求成功处理
3xx 300-399 重定向响应 需要进一步操作
4xx 400-499 客户端错误 请求包含错误
5xx 500-599 服务器错误 服务器处理失败

二、必知状态码详解

1. 成功响应(2xx)
状态码 名称 描述 示例场景
200 OK 请求成功,返回预期结果 获取资源成功(如网页、API数据)
201 Created 资源创建成功(通常伴随Location头返回新资源地址) 提交表单成功创建新用户
204 No Content 请求成功,但无返回内容 删除资源成功/OPTIONS预检请求
2. 重定向(3xx)
状态码 名称 描述 示例场景
301 Moved Permanently 资源永久重定向(浏览器会缓存) 网站改版后旧URL跳转到新URL
302 Found 资源临时重定向(浏览器不缓存) 登录后跳转到首页
304 Not Modified 资源未修改(缓存有效) 协商缓存命中时返回
3. 客户端错误(4xx)
状态码 名称 描述 示例场景
400 Bad Request 请求语法错误或参数无效 必填参数未传/JSON格式错误
401 Unauthorized 未认证(需提供身份凭证) 未登录访问需要权限的API
403 Forbidden 服务器拒绝执行(权限不足) 普通用户尝试访问管理员接口
404 Not Found 资源不存在 访问不存在的URL
429 Too Many Requests 请求过于频繁 API限流触发
4. 服务器错误(5xx)
状态码 名称 描述 示例场景
500 Internal Server Error 服务器内部错误(无具体信息) 代码抛出未捕获的异常
502 Bad Gateway 网关/代理服务器从上游收到无效响应 Nginx反向代理的后端服务崩溃
503 Service Unavailable 服务不可用(临时过载或维护) 服务器维护页面
504 Gateway Timeout 网关超时(上游服务器未及时响应) 后端数据库查询超时

三、特殊状态码

状态码 名称 用途
101 Switching Protocols 协议切换(如WebSocket握手)
206 Partial Content 分块传输(用于大文件断点续传)
418 I'm a teapot 彩蛋状态码(RFC 2324)

四、状态码决策树

五、最佳实践

  1. 前端处理建议

    • 2xx:正常处理数据

    • 401:跳转到登录页

    • 403:显示"无权访问"提示

    • 404:显示友好错误页

    • 5xx:建议用户稍后重试

  2. 后端设计原则

    • 4xx表示客户端问题,响应中应包含error_details

    • 5xx表示服务端问题,避免暴露内部错误信息

  3. 调试技巧

javascript 复制代码
// 在fetch/axios中拦截状态码
fetch(url)
  .then(res => {
    if (!res.ok) throw new Error(`${res.status}: ${res.statusText}`);
    return res.json();
  })
相关推荐
慢慢沉25 分钟前
UDP与TCP的区别
网络协议·tcp/ip·udp
小猪咪piggy33 分钟前
【JavaEE】(24) Linux 基础使用和程序部署
linux·运维·服务器
努力学习的小廉2 小时前
深入了解linux系统—— 线程同步
linux·服务器·数据库·算法
sinat_602035363 小时前
模块与包的导入
运维·服务器·开发语言·python
鲸屿1953 小时前
Ansible之playbook
服务器·网络·ansible
网硕互联的小客服3 小时前
408 Request Timeout:请求超时,服务器等待客户端发送请求的时间过长。
运维·服务器
王伯安呢3 小时前
告别线缆束缚!AirDroid Cast 多端投屏,让分享更自由
运维·服务器·教程·投屏·airdroid cast·多端互投
逍遥浪子~3 小时前
搭建本地gitea服务器
运维·服务器·gitea
喜欢你,还有大家3 小时前
FTP文件传输服务
linux·运维·服务器·前端
绝世剑仙纪宁4 小时前
TCP 三次握手、四次挥手
网络·网络协议·tcp/ip