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();
  })
相关推荐
可儿·四系桜14 分钟前
WebSocket:实时通信的新时代
java·网络·websocket·网络协议
李二。1 小时前
wordpress自学笔记 第二节: 3种独立站商城横幅的制作
服务器·笔记·wordpress
烦躁的大鼻嘎2 小时前
【Linux】深入拆解Ext文件系统:从磁盘物理结构到Linux文件管理
linux·运维·服务器·ubuntu·centos
传知摩尔狮3 小时前
深入理解 Linux 虚拟文件系统(VFS)
linux·运维·服务器·性能优化
YBDDIE3 小时前
Linux中的防火墙
linux·服务器·网络
不爱吃萝卜的嘤嘤怪3 小时前
如何删除vscod远程连接的服务器
运维·服务器·策略模式
2401_858286113 小时前
OSE2.【Linux】练习:查找项目的main函数入口
linux·运维·服务器
舰长1153 小时前
docker 镜像的导出和导入(导出完整镜像和导出容器快照)
linux·运维·服务器
遇见火星3 小时前
Linux下Systemd服务的核心功能及列出 Systemd 服务的方法!
linux·运维·服务器·systemd