Vibe Tutorial
域名解析原理与网络接入

12.5 HTTP状态码常识

Tip

每次你请求服务器,服务器都会回你一个数字。这个数字就是Status Code (状态码)。理解这些数字,你就读懂了服务器的情绪。


1. 为什么要学这个?

前端报错 500,你甩锅给后端:“你服务挂了。” 后端报错 400,甩锅给前端:“你参数传错了。”

不懂状态码,你连锅都甩不出去。这是开发团队沟通的通用语言


2. 核心概念:五大门派

  • 1xx: Hold on (等一下)。服务器收到请求了,正在处理。
  • 2xx: Success (成功)。
    • 200 OK: 一切正常。
  • 3xx: Go Away (重定向)。
    • 301: 永久搬家 (SEO 权重转移)。
    • 304: Not Modified (缓存没变,直接用本地的)。
  • 4xx: You fked up** (你错了 - 客户端错误)。
    • 400 Bad Request: 参数错了。
    • 401 Unauthorized: 没登录 / Token 过期。
    • 403 Forbidden: 登录了,但没权限。
    • 404 Not Found: 找不到。
  • 5xx: I fked up** (我错了 - 服务器错误)。
    • 500 Internal Server Error: 代码抛异常了。
    • 502 Bad Gateway: 网关连不上后端。
    • 504 Gateway Timeout: 后端太慢超时了。

3. 解决方案 (HOW)

3.1 客户端错误 (4xx - 你的锅)

graph TD
    User["用户请求"] --> Check{"检查参数/权限"}
    
    Check --"参数错"--> 400["400: Bad Request"]
    Check --"没登录"--> 401["401: Unauthorized"]
    Check --"没权限"--> 403["403: Forbidden"]
    Check --"找不到"--> 404["404: Not Found"]
    
    style 400 fill:#ffcc80,stroke:#ef6c00
    style 401 fill:#ffcc80,stroke:#ef6c00
    style 403 fill:#ffcc80,stroke:#ef6c00
    style 404 fill:#ffcc80,stroke:#ef6c00

3.2 服务端错误 (5xx - 服务器的锅)

graph TD
    Server["服务器处理"] --> Crash{"是否崩溃?"}
    
    Crash --"代码崩了"--> 500["500: Internal Error"]
    Crash --"网关不通"--> 502["502: Bad Gateway"]
    Crash --"处理超时"--> 504["504: Gateway Timeout"]
    
    style 500 fill:#ffcdd2,stroke:#c62828
    style 502 fill:#ffcdd2,stroke:#c62828
    style 504 fill:#ffcdd2,stroke:#c62828

4. 避坑指南

❌ 不要这样做 ✅ 应该这样做 为什么
永远 200 使用标准状态码 API 永远返回 200,错误信息写在 Body 里 {code: -1}。这会让监控系统失效,Sentry 以为你是成功的。
混用 401/403 区分未登录与无权限 401 是“你是谁?(身份认证)”,403 是“我知道你是谁,但你不配 (权限不足)”。
滥用 301 先尝试 302 301 是永久重定向,浏览器会缓存很久。如果你将来想改回来,用户浏览器里存的还是旧地址,这会让你非常痛苦。

5. 真实案例

Story

2015年,永远成功的 API

某大厂曾规定所有 API 必须返回 200,业务错误码自己定义。 结果有一天,网关层(Nginx)配置错误,真的把所有请求都拦截了返回 200 (一个 HTML 错误页)。 APP 端解析 JSON 失败导致崩溃,但监控大盘上却是一条平滑的“成功率 100%”直线(因为全回了 200)。运维直到接到大量客诉才发现问题。

Vibe 心法:HTTP 状态码是互联网的基础设施语言。尊重标准,不要试图发明“永远 200”的异端。让 4xx 和 5xx 成为监控系统的哨兵,才能真正实现大规模系统的自动化巡检。


6. 本章小结

  1. 甩锅神器:4xx 是客户端的错,5xx 是服务器的错。
  2. 304:是 HTTP 缓存机制的核心,性能优化的关键。
  3. Respect Standards:遵循标准,你的工具链(浏览器、监控、CDN)才能正常工作。