← 返回题目列表

HTTP 常见状态码有哪些?分别代表什么?

高频 简单 第 4 / 32 题 更新于 2026/07/28
HTTP状态码

简化版

状态码分五类,看首位数字就知道大方向:1xx 信息(少见)、2xx 成功、3xx 重定向、4xx 客户端错误、5xx 服务端错误。高频要记的:200 成功、301/302 永久/临时重定向、304 缓存未修改、400/401/403/404 客户端错、500/502/503/504 服务端错。

详细版

五大类

类别含义常见码
1xx信息性(请求已收到,继续处理)100 Continue、101 Switching Protocols
2xx成功200 OK、201 Created、204 No Content
3xx重定向301、302、304、307、308
4xx客户端错误400、401、403、404、405、429
5xx服务端错误500、502、503、504

高频码含义

  • 200 OK:请求成功。
  • 201 Created:创建成功(POST/PUT 新建资源后返回)。
  • 204 No Content:成功但无返回体(如删除成功)。
  • 301 Moved Permanently:永久重定向,浏览器/搜索引擎会更新地址。
  • 302 Found:临时重定向,地址暂时换了,不更新收藏。
  • 304 Not Modified:协商缓存命中,资源没变,用本地缓存。
  • 400 Bad Request:请求格式/参数有误。
  • 401 Unauthorized:未认证(没登录 / token 无效)。
  • 403 Forbidden:已认证但无权限(登录了但不让访问)。
  • 404 Not Found:资源不存在。
  • 500 Internal Server Error:服务器内部错误(代码 bug)。
  • 502 Bad Gateway:网关/代理从上游收到无效响应(后端挂了)。
  • 503 Service Unavailable:服务暂时不可用(过载/维护)。
  • 504 Gateway Timeout:网关等上游响应超时。

完整版教学

一、先记住五类的「大方向」

状态码不用死背,抓住首位数字的规律:

  • 1xx:还在处理中(很少直接见到);
  • 2xx:成功了;
  • 3xx:你要的东西挪地方了 / 用缓存吧(重定向类);
  • 4xx你(客户端)的错——请求有问题;
  • 5xx服务器的错——请求没问题,是后端处理出了岔子。

4xx 和 5xx 的分界最重要:4xx 甩锅给客户端,5xx 甩锅给服务器。排查线上问题时,看到 4xx 先查请求本身(参数、权限),看到 5xx 先查服务端(日志、依赖)。

二、301 vs 302:永久还是临时

这是高频追问:

  • 301 永久重定向:这个地址永久搬走了。浏览器会缓存这个跳转、搜索引擎会更新收录到新地址。适合域名更换、HTTP 跳 HTTPS。
  • 302 临时重定向:只是暂时跳转,原地址以后还要用。搜索引擎不更新收录。适合未登录跳登录页、活动临时跳转。

用错影响很大:本该临时的用了 301,浏览器会长期缓存跳转,想改回来都难。(307/308 是语义更严格的版本,跳转时不允许把 POST 改成 GET。)

三、401 vs 403:没登录还是没权限

也是经典易混:

  • 401 Unauthorized未认证——你还没登录,或 token 过期/无效。潜台词是「你是谁?先证明身份」。
  • 403 Forbidden已认证但无权限——你登录了,但这个资源不让你这个身份访问。潜台词是「我知道你是谁,但你不够格」。

记法:401 = 没登录(Who are you),403 = 没权限(You can’t)。

四、502 vs 503 vs 504:服务端三兄弟

微服务/Nginx 架构下这三个很常见,要能区分:

  • 502 Bad Gateway:网关(Nginx)把请求转给上游后端,后端返回了无效响应——通常是后端服务挂了/崩了
  • 503 Service Unavailable:服务暂时不可用——过载、限流、正在维护、线程池满。
  • 504 Gateway Timeout:网关等上游后端响应,等超时了——后端太慢或卡死。

记法:502 后端挂了、503 服务过载/维护、504 后端超时。 排查方向各不相同。

五、304 与缓存的关系

304 不是「错误」,是缓存机制的一环。当浏览器带着 If-None-Match/If-Modified-Since 去问服务器「我这份缓存还能用吗」,服务器发现资源没变,就回 304 Not Modified(不带响应体),浏览器直接用本地缓存。这样省了传输大文件的带宽(详见「HTTP 强缓存和协商缓存」那道题)。

六、常见误区

  • ❌ 把 401 和 403 记反——401 未认证(没登录),403 无权限(登录了但不让)。
  • ❌ 把 301 当临时用——301 会被浏览器/搜索引擎长期缓存,临时跳转要用 302。
  • ❌ 以为 3xx/304 是错误——3xx 是重定向,304 是缓存命中,都不是错误。
  • ❌ 502/504 分不清——502 是后端返回无效响应(挂了),504 是等后端超时。

六、常见误区与追问

考点正确口径
1xx信息提示
2xx成功
3xx重定向或缓存
4xx客户端错误
5xx服务端错误
200 OK
301 Moved Permanently
304 Not Modified
401 Unauthorized
403 Forbidden
502 Bad Gateway
504 Gateway Timeout

状态码先按大类判断方向,再记高频相邻码的细微差别。

  • 误区:401 和 403 都是没权限,没区别。 401 更偏未认证或认证失败,403 是已理解请求但拒绝授权。
  • 误区:301 和 302 对 SEO 没区别。 301 是永久重定向,302 是临时重定向,缓存和搜索引擎处理不同。
  • 误区:304 是错误状态。 304 是协商缓存命中,表示资源未修改,客户端可用本地缓存。
  • 追问:502、503、504 如何区分? 502 是网关收到上游无效响应,503 是服务暂不可用,504 是网关等待上游超时。
  • 追问:201 和 204 常用于什么? 201 表示创建成功,204 表示成功但无响应体。
  • 追问:接口永远返回 200 好不好? 不好,会让客户端、网关、监控和缓存无法正确理解错误类型。

七、加强记忆

状态码看首位:1xx 信息、2xx 成功、3xx 重定向、4xx 客户端错、5xx 服务端错(4xx 怪客户端、5xx 怪服务器)。高频记:200 成功、301 永久/302 临时重定向、304 缓存命中、401 没登录/403 没权限、404 找不到、500 后端 bug、502 后端挂/503 过载/504 超时。