【HTTP】HTTP状态码全分类表(1xx/2xx/3xx/4xx/5xx)(附:《思维导图》)

简介: HTTP状态码是服务器对客户端请求的3位数字响应,依据RFC 7231分为5类:1xx(信息)、2xx(成功)、3xx(重定向)、4xx(客户端错误)、5xx(服务器错误)。本文系统梳理各分类核心码(如200、404、500等),明确语义、场景、特性及常见误区,兼顾规范性与工程实践。

HTTP状态码

HTTP状态码是HTTP协议中,服务器向客户端告知请求处理结果的3位数字代码,核心规范来自RFC 7231(HTTP/1.1语义标准),首位数字固定划分5个基础分类,覆盖请求处理的全流程结果。以下按分类结构化梳理,标注核心常用码、标准定义、适用场景及关键特性,兼顾规范严谨性与开发运维的实际使用。


一、1xx 信息性状态码(Informational)

核心定义:服务器已接收请求,正在处理中,需客户端等待后续最终响应。属于临时响应,仅包含状态行和可选响应头,无响应体。

状态码 核心标识 标准定义与适用场景 关键特性
100 Continue 核心常用 服务器已校验并接收请求头,通知客户端继续发送请求体(POST/PUT等大体积请求) 用于客户端带Expect: 100-continue头的场景,避免大文件传输无效浪费带宽
101 Switching Protocols 常用 服务器同意客户端的协议切换请求(通过Upgrade头指定) 典型场景:WebSocket连接建立、HTTP/1.1升级至HTTP/2,响应头会明确切换后的协议
103 Early Hints 近年常用 服务器在最终响应前,提前返回带Link头的预加载指令 用于浏览器提前预加载CSS、JS等静态资源,优化页面首屏加载性能,RFC 8297规范定义
102 Processing 扩展常用 服务器已接收请求并正在处理,暂无可用响应,避免客户端超时 WebDAV扩展(RFC 2518),用于耗时较长的批量文件操作场景

二、2xx 成功状态码(Success)

核心定义:服务器已成功接收、理解并处理客户端的请求,是请求的理想响应类别。

状态码 核心标识 标准定义与适用场景 关键特性
200 OK 最核心最常用 请求完全成功,服务器已返回请求的目标资源 适配GET/POST/PUT等绝大多数请求:GET返回资源体,POST/PUT返回操作结果,是HTTP最通用的成功码
201 Created 核心常用 请求成功,且服务器已创建新的资源 用于POST/PUT创建资源的场景(如新增用户、上传文件),响应头通常带Location指向新资源的URI
202 Accepted 常用 服务器已接收请求,但尚未完成处理 用于异步任务场景(如批量导入、视频转码、邮件发送),可返回任务ID供客户端轮询,不保证最终处理成功
204 No Content 核心常用 请求成功,但服务器无任何响应体返回 用于DELETE删除资源、PUT更新资源无需返回内容的场景,客户端无需刷新页面,仅需确认操作成功
206 Partial Content 核心常用 服务器成功处理客户端的范围请求,仅返回资源的指定片段 用于断点续传、视频分片加载,请求头带Range,响应头带Content-Range标注分块字节范围
205 Reset Content 补充 请求成功,要求客户端重置文档视图(如清空表单内容) 与204的核心区别:强制要求客户端重置UI,典型场景为表单提交后自动清空所有输入项
207 Multi-Status WebDAV扩展 一次请求返回多个独立子操作的处理状态,响应体包含每个子操作的状态码 用于WebDAV批量操作文件/文件夹,一次性返回多个资源的处理结果

三、3xx 重定向状态码(Redirection)

核心定义:客户端需要执行额外操作才能完成请求,主要用于资源跳转、缓存控制,核心分为永久重定向临时重定向,关键差异为是否保留原始请求方法、是否被浏览器缓存。

状态码 核心标识 标准定义与适用场景 关键特性
301 Moved Permanently 核心常用(永久重定向) 资源已永久移动到新URI,后续所有请求应使用新地址 浏览器会永久缓存重定向地址;部分旧浏览器会将原始POST请求改为GET;典型场景:域名更换、页面永久迁移、SEO权重转移
302 Found 核心常用(临时重定向) 资源临时移动到新URI,客户端本次使用新地址,后续仍使用原地址 浏览器不缓存重定向地址;历史规范问题,多数旧浏览器会将POST改为GET;典型场景:未登录跳转登录页、临时活动页跳转
303 See Other 常用 请求处理成功,引导客户端使用GET方法跳转到新URI获取结果 强制将POST/PUT/DELETE请求改为GET跳转,无缓存;典型场景:表单POST提交成功后跳转结果页,避免用户刷新重复提交
304 Not Modified 核心常用(缓存专用) 资源未发生修改,客户端可直接使用本地缓存 无响应体;触发条件为客户端带If-Modified-Since/If-None-Match头,服务器校验资源未变更;典型场景:浏览器静态资源(图片、CSS、JS)缓存,减少带宽消耗
307 Temporary Redirect 核心常用(临时重定向) 资源临时移动到新URI,严格保留原始请求方法和请求体 与302的核心区别:强制不修改请求方法,不会转为GET;无缓存;典型场景:RESTful API POST/PUT请求的临时跳转,避免业务异常
308 Permanent Redirect 常用(永久重定向) 资源已永久移动到新URI,严格保留原始请求方法和请求体 与301的核心区别:强制不修改请求方法,不会转为GET;浏览器永久缓存;典型场景:API接口域名永久更换,需保留非GET请求的方法和body

补充:305、306状态码已被RFC 7231弃用,存在安全风险,现代浏览器均不支持,无实际使用场景。


四、4xx 客户端错误状态码(Client Error)

核心定义:请求存在语法、权限、参数、资源等问题,服务器无法或拒绝处理,错误根源在客户端,是开发调试中最常遇到的类别。

状态码 核心标识 标准定义与适用场景 关键特性
400 Bad Request 核心常用 服务器无法理解请求,因客户端请求存在语法错误、格式无效 通用客户端错误码,典型场景:JSON请求体格式错误、URL编码异常、请求参数格式非法、请求头过大
401 Unauthorized 核心常用 请求需要用户身份认证,客户端未提供凭证或凭证无效 响应头必须带WWW-Authenticate标注认证方式(如Bearer Token、Basic认证);典型场景:未携带Token访问接口、Token过期/签名错误、账号密码错误;语义为「未认证」,而非「未授权」
403 Forbidden 核心常用 服务器已理解请求,但拒绝执行,即使认证成功也无权访问 与401核心区别:401是「身份无效/未登录」,403是「已登录,但无权限」;典型场景:普通用户访问管理员接口、IP被封禁、跨域请求被拦截、CSRF令牌无效
404 Not Found 最常用客户端错误 服务器无法找到请求的资源,URI无效或资源已删除/不存在 典型场景:URL拼写错误、资源已永久删除、路由未配置、接口地址写错
405 Method Not Allowed 核心常用 请求的URI存在,但不支持客户端使用的HTTP方法 响应头必须带Allow,列出该URI支持的合法方法;典型场景:仅支持GET的接口被POST请求访问、RESTful接口方法使用错误
409 Conflict 核心常用 请求与服务器资源的当前状态存在冲突,无法完成处理 典型场景:并发修改同一资源(乐观锁冲突)、创建已存在的唯一资源(重复注册用户名)、资源状态不允许操作(已付款订单重复支付)
413 Payload Too Large 核心常用 客户端请求体大小超过服务器限制,服务器拒绝处理 典型场景:上传超大文件、POST提交的JSON体过大,超出Nginx/后端服务的body上限
414 URI Too Long 常用 客户端请求的URI长度超过服务器限制,服务器拒绝处理 典型场景:GET请求带超长query参数、URL拼接过多参数,超出浏览器/服务器的URI长度限制
415 Unsupported Media Type 核心常用 服务器不支持客户端请求的Content-Type格式,无法处理请求体 典型场景:接口要求application/json,客户端携带form-data/text/plain、上传文件格式不被支持
422 Unprocessable Entity 核心常用(API开发) 服务器已理解请求的Content-Type、语法正确,但无法处理请求的语义内容 与400核心区别:400是语法错误,422是业务语义校验失败;典型场景:请求参数格式正确,但密码长度不足、手机号格式非法、必填参数为空
429 Too Many Requests 核心常用(限流防刷) 客户端单位时间内请求数超过服务器限制,触发限流 响应头通常带Retry-After告知重试间隔;典型场景:API接口限流、防爬虫、短信验证码防刷、登录失败次数限制
431 Request Header Fields Too Large 常用 客户端请求头单个字段或总大小超过服务器限制 典型场景:Cookie体积过大、自定义请求头超长,超出Nginx等服务器的header上限
451 Unavailable For Legal Reasons 常用 因法律合规要求,服务器拒绝提供该资源 典型场景:版权保护内容、地域限制内容、被依法封禁的资源,命名致敬《华氏451》
418 I'm a teapot 彩蛋非标准 超文本咖啡壶控制协议(RFC 2324)愚人节彩蛋,服务器拒绝用茶壶煮咖啡 无正式业务场景,多用于开发者调试、反爬虫、趣味页面

补充:402 Payment Required为预留状态码,最初用于数字支付场景,目前未被广泛标准化使用;407、408、410、411、412、416、417、421、426、428等为标准补充码,用于特定细分场景,日常开发中使用频率较低。


五、5xx 服务器错误状态码(Server Error)

核心定义:服务器处理合法请求时,发生了内部错误,无法完成请求,错误根源在服务端,是运维、后端开发重点监控的类别。

状态码 核心标识 标准定义与适用场景 关键特性
500 Internal Server Error 最核心最常用服务端错误 服务器处理请求时发生未预期的内部错误,无更精准的错误码可用 通用服务端错误码,典型场景:后端代码运行时异常(空指针、SQL执行错误)、业务逻辑崩溃、服务器配置错误
501 Not Implemented 常用 服务器不支持客户端请求的功能,无法完成处理 与405核心区别:405是方法存在但URI不支持,501是服务器根本不支持该方法/功能;典型场景:客户端使用服务器未实现的HTTP方法、请求的功能未开发完成
502 Bad Gateway 核心常用 作为网关/代理的服务器,从上游源服务器收到了无效的响应 典型场景:Nginx反向代理的后端服务崩溃、端口未监听、PHP-FPM未启动、网关与上游服务通信协议错误
503 Service Unavailable 核心常用 服务器当前无法处理请求,属于临时过载或维护,稍后可恢复 响应头通常带Retry-After告知恢复时间;典型场景:服务停机维护、服务器流量过载、熔断降级触发、服务重启中
504 Gateway Timeout 核心常用 作为网关/代理的服务器,等待上游源服务器响应超时 与502核心区别:502是收到了无效响应,504是超时未收到响应;典型场景:后端慢SQL、死循环、第三方接口超时,超出网关的超时时间限制
505 HTTP Version Not Supported 补充 服务器不支持客户端请求使用的HTTP协议版本 典型场景:客户端使用HTTP/0.9、HTTP/3等服务器不兼容的协议版本发送请求
507 Insufficient Storage WebDAV扩展 服务器存储空间不足,无法完成请求操作 典型场景:WebDAV上传文件时服务器磁盘已满、数据库存储空间不足
511 Network Authentication Required 常用 客户端需要完成网络身份认证才能访问网络 典型场景:酒店、机场、咖啡厅的Wi-Fi门户认证,未登录前访问网页会返回该状态码

补充说明与使用规范

  1. 规范来源:核心状态码由RFC 7231定义,扩展码来自RFC 2518(WebDAV)、RFC 6585(附加状态码)、RFC 8297(103 Early Hints)等官方标准。
  2. 业务自定义规范:企业通常在标准HTTP状态码基础上,通过响应体的code字段定义细分业务错误码;HTTP状态码仅负责标识HTTP协议层的处理状态,业务错误码负责细分业务场景的错误原因。
  3. 常见使用误区
    • 混淆401与403:401是「未登录/身份无效」,403是「已登录,但无权限」;
    • 混淆302与307:302可能将POST转为GET,307严格保留原始请求方法;
    • 滥用500:所有服务端错误都返回500,应根据场景使用更精准的状态码;
    • 全量200返回:无论成功失败都返回200,仅通过body标识错误,不符合HTTP语义规范,不利于网关监控、CDN缓存与SEO。

六、思维导图

HTTP状态码全分类——思维导图

相关文章
|
缓存 UED 开发者
HTTP常用状态码详解
HTTP常用状态码详解
|
XML 域名解析 JSON
【RESTful】RESTful API 接口设计规范 | 示例
【RESTful】RESTful API 接口设计规范 | 示例
14569 0
【RESTful】RESTful API 接口设计规范 | 示例
|
5月前
|
安全 Java 测试技术
告别手动部署噩梦:CI/CD 持续交付全链路实战
本文系统讲解Java项目CI/CD落地实践:厘清CI(持续集成)、CD(持续交付/部署)核心概念与本质区别;详解自动化流水线设计,涵盖代码检查(CheckStyle/SpotBugs/SonarQube)、单元测试、依赖安全扫描(OWASP)、容器化构建(Docker+GitHub Actions)及多环境部署;深入剖析蓝绿、金丝雀等零停机发布策略,并提供可运行的Shell脚本实战;最后总结八大最佳实践与六大高频避坑指南。
733 1
|
4月前
|
数据采集 缓存 安全
【HTTP】HTTP协议核心体系:请求方法与状态码全结构化解析(附《思维导图》)
本文系统解析HTTP/1.1请求方法与状态码:厘清安全/幂等本质,详解9种方法语义、约束与误区;全覆盖状态码全分类(1xx/2xx/3xx/4xx/5xx核心场景)的定义、场景及关键区分(如301/308、401/403、502/504);强调RESTful实践与高频红线,助力构建健壮、规范的Web服务。
|
缓存 开发工具 git
【git】解决:remote: Permission to xxxx/xxxx.git denied to xxxx
【git】解决:remote: Permission to xxxx/xxxx.git denied to xxxx
1586 0
HTTP协议中常见的状态码 ?
HTTP状态码分为1xx、2xx、3xx、4xx、5xx五类。常见状态码包括:101(切换协议,如WebSocket)、200(请求成功)、302(重定向)、401(未认证)、404(资源未找到)、500(服务器内部错误),广泛应用于Web开发中。
|
机器学习/深度学习 存储 算法
SMOTE-XGBoost实战:金融风控中欺诈检测的样本不平衡解决方案
本文深入探讨金融支付风控领域中的欺诈检测问题,针对样本不平衡的核心痛点,提出一种基于动态密度SMOTE算法的改进方案,并结合优化后的XGBoost模型实现高性能检测。相比传统方法,本文方案在IEEE-CIS数据集上显著提升Recall(达0.85)和AUC-PR(达0.72),同时控制推理时延在合理范围。文章还详细解析特征工程体系、在线推理优化及动态阈值调整机制,并展望联邦学习与图神经网络等未来方向,为实际业务应用提供全面指导。
953 1
|
关系型数据库 MySQL PHP
利用PhpStorm、phpstudy和xdebug快速构建PHP调试环境
至此,我们已经完成了PHP调试环境的构建。现在,你可以在PhpStorm中打开你的PHP项目,设置断点,然后开始调试你的代码了。希望这个指南能帮助你快速构建PHP调试环境,提高你的开发效率。
825 26
|
SQL 运维 关系型数据库
MySQL Binlog 日志查看方法及查看内容解析
本文介绍了 MySQL 的 Binlog(二进制日志)功能及其使用方法。Binlog 记录了数据库的所有数据变更操作,如 INSERT、UPDATE 和 DELETE,对数据恢复、主从复制和审计至关重要。文章详细说明了如何开启 Binlog 功能、查看当前日志文件及内容,并解析了常见的事件类型,包括 Format_desc、Query、Table_map、Write_rows、Update_rows 和 Delete_rows 等,帮助用户掌握数据库变化历史,提升维护和排障能力。
|
存储 前端开发 Java
验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)
本文介绍了使用Kaptcha插件在SpringBoot项目中实现验证码的生成和验证,包括后端生成验证码、前端展示以及通过session进行验证码校验的完整前后端代码和配置过程。
4093 1
验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)