HTTP状态码
HTTP状态码查询与说明
服务器成功处理了请求,并返回了请求的数据。
- 1.GET 请求成功获取资源
- 2.POST 请求成功提交数据
- 3.PUT/PATCH 请求成功更新资源
- 1.检查响应体中的数据是否符合预期
- 2.这是最常见的成功状态码
服务器成功创建了新资源。通常在 POST 请求后返回。
- 1.POST 请求成功创建新用户
- 2.上传文件成功
- 3.创建新的数据库记录
- 1.响应头 Location 字段包含新资源的 URL
- 2.客户端可通过 Location 获取新资源
服务器成功处理了请求,但不返回任何内容。常用于 DELETE 操作。
- 1.DELETE 请求成功删除资源
- 2.PUT 请求成功更新但无需返回内容
- 3.前端轮询接口无新数据
- 1.适用于不需要返回响应体的场景
- 2.DELETE 操作常用此状态码表示成功
请求的资源已永久移动到新URL。搜索引擎会更新索引到新URL。
- 1.网站域名变更
- 2.页面URL结构调整
- 3.HTTP 升级到 HTTPS
- 1.确保 Location 头指向正确的 URL
- 2.搜索引擎会将权重转移到新 URL
- 3.浏览器会缓存此重定向
请求的资源临时移动到新URL。搜索引擎仍保留旧URL的索引。
- 1.临时页面跳转
- 2.登录后重定向到首页
- 3.A/B 测试页面切换
- 1.搜索引擎不会更新索引
- 2.浏览器下次访问仍使用旧 URL
- 3.适用于临时性重定向
资源自上次请求以来未被修改。客户端使用本地缓存即可。
- 1.客户端发送了 If-Modified-Since 或 If-None-Match 请求头
- 2.服务器对比后确认资源未变化
- 1.304 响应不包含响应体,节省带宽
- 2.利用浏览器缓存提升加载速度
- 3.配合 Cache-Control 和 ETag 使用
服务器无法理解客户端的请求,通常是由于请求语法错误。
- 1.请求参数格式不正确
- 2.JSON/XML 格式错误
- 3.请求头格式不合法
- 4.缺少必要的请求参数
- 1.检查请求参数格式是否正确
- 2.验证请求体的 JSON/XML 语法
- 3.确认所有必填字段都已提供
请求需要用户认证。客户端未提供有效的认证凭证。
- 1.未登录或 Token 已过期
- 2.API Key 无效或缺失
- 3.Bearer Token 格式不正确
- 1.检查 Authorization 请求头是否正确
- 2.确认 Token 未过期,必要时刷新
- 3.提供正确的认证凭证后重试
服务器理解请求但拒绝执行。客户端已认证但无权限访问该资源。
- 1.用户角色权限不足
- 2.IP 地址被拒绝访问
- 3.服务器配置禁止访问该目录
- 4.CORS 跨域请求被拒绝
- 1.确认用户是否有访问该资源的权限
- 2.检查服务器配置(如 Nginx/Apache 权限设置)
- 3.CORS 问题需检查服务端跨域配置
服务器无法找到请求的资源。这是最常见的客户端错误。
- 1.URL 拼写错误
- 2.资源已被删除或移动
- 3.路由配置不正确
- 4.前端路由与后端路由不匹配
- 1.检查请求 URL 是否正确
- 2.确认资源是否存在
- 3.检查服务器路由配置
- 4.考虑提供友好的 404 页面
客户端在给定时间内发送了过多请求,触发了限流。
- 1.接口调用频率超过限制
- 2.爬虫/脚本高频访问
- 3.API 配额已用完
- 1.检查 Retry-After 响应头了解何时可重试
- 2.降低请求频率
- 3.实现请求队列和限流机制
- 4.升级 API 配额
服务器内部发生了未预期的错误。这是最常见的服务器错误。
- 1.后端代码抛出未捕获的异常
- 2.数据库连接失败
- 3.服务器配置错误
- 4.内存不足或资源耗尽
- 1.查看服务器错误日志定位问题
- 2.检查数据库连接和配置
- 3.确认服务器资源是否充足
网关或代理从上游服务器接收到了无效的响应。
- 1.反向代理(Nginx)无法连接到上游服务
- 2.上游服务已停止或崩溃
- 3.上游服务响应超时
- 4.代理配置的 upstream 地址错误
- 1.检查上游服务是否正常运行
- 2.确认代理配置的 upstream 地址和端口
- 3.查看代理服务器日志
服务器暂时无法处理请求(维护或过载)。
- 1.服务器正在进行维护
- 2.服务器负载过高(流量激增)
- 3.依赖的第三方服务不可用
- 1.稍后重试
- 2.检查 Retry-After 响应头
- 3.启用服务降级和熔断机制
- 4.增加服务器容量
网关或代理在等待上游服务器响应时超时。
- 1.上游服务处理请求时间过长
- 2.网络延迟或丢包
- 3.数据库查询慢
- 4.上游服务死锁或阻塞
- 1.优化上游服务性能
- 2.增加网关超时时间
- 3.检查数据库慢查询
- 4.排查上游服务阻塞原因
服务器已收到请求的初始部分,客户端应继续发送请求的剩余部分。
- 1.客户端发送了包含 Expect: 100-continue 的请求头
- 2.服务器同意接收请求体
- 1.客户端在收到 100 后继续发送请求体
- 2.如果未收到 100 响应,客户端不应发送请求体
服务器根据客户端的请求,正在切换到不同的协议。
- 1.客户端发送了 Upgrade 请求头要求协议升级
- 2.最常见的场景是 HTTP 升级到 WebSocket
- 1.确保客户端能正确处理新协议
- 2.WebSocket 连接建立后使用双向通信
服务器已收到请求并正在处理,但尚未完成。
- 1.WebDAV 操作需要较长时间处理
- 2.服务器主动通知客户端请求仍在处理中
- 1.客户端应继续等待响应
- 2.设置适当的超时时间
服务器在最终响应之前,提前发送一些响应头给客户端。
- 1.服务器在处理请求的同时提前发送 Link 头
- 2.用于预加载关键资源,优化页面加载性能
- 1.配合 Preload/Prefetch 使用可提升性能
- 2.客户端收到后应开始预加载相关资源
DNS 解析失败,无法将域名解析为 IP 地址。
- 1.域名不存在或已过期
- 2.DNS 服务器配置错误
- 3.网络连接异常导致 DNS 查询失败
- 1.检查域名拼写是否正确
- 2.尝试更换 DNS 服务器(如 8.8.8.8)
- 3.检查网络连接是否正常
请求的 URI 长度超过了服务器允许的限制。
- 1.GET 请求参数过多导致 URL 过长
- 2.将 POST 数据编码到 URL 中
- 1.改用 POST 方法提交数据
- 2.缩短 URL 长度
- 3.增加服务器 URI 长度限制
服务器已接受请求,但尚未处理完成(异步处理)。
- 1.请求已被加入处理队列
- 2.服务器需要较长时间完成处理
- 1.客户端应轮询或通过其他方式获取最终结果
- 2.适用于异步任务场景
服务器返回的元信息来自第三方,而非原始服务器。
- 1.通过代理服务器获取资源
- 2.代理对响应内容进行了修改
- 1.响应可能不是最新的
- 2.如需权威信息应直接访问源服务器
服务器要求客户端重置文档视图。
- 1.表单提交后需要清空表单
- 2.客户端需要重新加载页面
- 1.客户端应清除表单中的用户输入
- 2.较少使用的状态码
服务器成功返回了请求资源的部分内容(范围请求)。
- 1.视频/音频文件分段下载
- 2.大文件断点续传
- 3.Range 请求头指定了字节范围
- 1.配合 Content-Range 响应头使用
- 2.用于实现大文件分片下载
WebDAV 操作返回多个状态码的复合响应。
- 1.批量操作中部分成功部分失败
- 2.WebDAV PROPFIND/PROPPATCH 操作
- 1.解析 XML 响应体获取每个操作的状态
- 2.主要用于 WebDAV 场景
WebDAV 中成员已在前一个响应中报告过。
- 1.DAV: binding 响应中避免重复报告
- 1.主要用于 WebDAV 绑定扩展
服务器已对响应应用了实例操作(Instance Manipulations)。
- 1.使用 AIM (Applied Instance Manipulations) 压缩响应
- 1.配合 AIM 请求头使用
请求的资源有多种表示形式,服务器返回一个选择列表。
- 1.资源支持多种内容格式(如 HTML/JSON/XML)
- 2.服务器无法确定客户端需要哪种格式
- 1.客户端应根据 Content-Type 选择合适的格式
- 2.较少实际使用
服务器要求客户端使用 GET 方法访问另一个 URL 获取响应。
- 1.POST 提交后重定向到结果页
- 2.防止表单重复提交
- 1.常用于 POST/PUT/DELETE 后的重定向
- 2.使用 GET 方法访问新 URL
请求的资源必须通过代理访问。
- 1.服务器配置要求客户端通过代理访问
- 1.已不推荐使用,可能存在安全隐患
与302类似,但要求客户端在重定向时保持原始HTTP方法不变。
- 1.POST 请求需要临时重定向到新URL
- 2.确保重定向后仍使用 POST 方法
- 1.区别于 302:307 保证 HTTP 方法不变
- 2.302 可能将 POST 变为 GET
与301类似,但要求客户端在重定向时保持原始HTTP方法不变。
- 1.API 端点永久迁移且需保持 HTTP 方法
- 2.POST/PUT 请求的永久重定向
- 1.区别于 301:308 保证 HTTP 方法不变
- 2.301 可能将 POST 变为 GET
请求需要支付费用。此状态码保留给未来使用。
- 1.付费 API 的额度用完
- 2.需要订阅才能访问的资源
- 1.检查账户余额和订阅状态
- 2.实际使用较少,多为自定义
请求的 HTTP 方法不被允许。
- 1.对只读资源使用 POST 方法
- 2.对只写资源使用 GET 方法
- 3.API 路由未配置该方法
- 1.检查 HTTP 方法是否正确(GET/POST/PUT/DELETE)
- 2.查看 Allow 响应头了解支持的方法
- 3.确认后端路由配置
服务器无法根据请求的 Accept 头生成匹配的响应。
- 1.客户端要求的 Content-Type 服务器不支持
- 2.语言协商失败
- 1.检查 Accept 请求头是否合理
- 2.确认服务器支持请求的内容类型
服务器在等待请求期间超时。
- 1.客户端发送请求过慢
- 2.网络连接不稳定
- 3.上传大文件时连接中断
- 1.检查网络连接
- 2.增加服务器超时时间
- 3.客户端实现重试机制
请求与服务器当前状态冲突。
- 1.重复创建已存在的资源
- 2.版本冲突(乐观锁)
- 3.并发修改同一资源
- 1.检查资源是否已存在
- 2.使用条件请求(If-Match)处理并发
- 3.客户端应解决冲突后重试
请求的资源已被永久删除,不再可用。
- 1.资源已被永久移除
- 2.API 接口已废弃
- 1.与 404 不同,410 表示资源曾经存在但已被永久删除
- 2.应更新引用该资源的链接
请求体的大小超过了服务器允许的限制。
- 1.上传文件过大
- 2.POST/PUT 请求体超过限制
- 3.Nginx/Apache 配置的 body size 限制
- 1.减小上传文件大小
- 2.检查并调整服务端 body size 配置
- 3.考虑分片上传大文件
请求的 URI 长度超过了服务器允许的限制。
- 1.GET 请求参数过多导致 URL 过长
- 2.将 POST 数据编码到 URL 中
- 1.改用 POST 方法提交数据
- 2.缩短 URL 长度
- 3.增加服务器 URI 长度限制
服务器不支持请求中 Content-Type 指定的媒体类型。
- 1.请求头 Content-Type 与服务器预期不符
- 2.发送 JSON 但服务器期望 XML
- 3.缺少 Content-Type 请求头
- 1.检查 Content-Type 请求头是否正确
- 2.确认服务器支持该媒体类型
服务器理解请求格式但无法处理其中的语义错误。
- 1.请求参数值不合法(如邮箱格式错误)
- 2.数据验证失败
- 3.业务规则不满足
- 1.检查请求参数的具体值是否合法
- 2.查看响应体中的详细错误信息
- 3.前端应做好参数校验
服务器不支持请求的功能。
- 1.请求了服务器不支持的 HTTP 方法
- 2.使用了服务器未实现的功能
- 1.检查请求方法是否正确
- 2.联系服务器管理员确认支持的功能
服务器不支持请求中使用的 HTTP 版本。
- 1.客户端使用了 HTTP/2 但服务器不支持
- 2.HTTP 版本协商失败
- 1.降级到 HTTP/1.1 重试
- 2.升级服务器支持新的 HTTP 版本
服务器无法存储完成请求所需的内容,存储空间不足。
- 1.WebDAV 操作中服务器磁盘空间不足
- 2.文件上传时磁盘已满
- 1.清理服务器磁盘空间
- 2.扩展存储容量
客户端需要进行网络认证才能访问资源。
- 1.公共 WiFi 需要登录认证
- 2.网络层面的认证拦截
- 1.完成网络认证后重试
- 2.检查网络连接设置