HTTP 状态码

HTTP 状态码是什么?

当我们在浏览器中访问网页,或使用 App 请求一个网络资源时,背后其实发生了一个 “请求 ↔ 响应” 的过程:

  • 客户端(比如你的浏览器)发出一个 “请求”。
  • 服务器接收到请求并处理,然后返回一个 “响应”。

在服务器返回的响应中,有一个非常重要的 3 位数字,这就是 “HTTP 状态码”。它的作用是:告诉客户端这个请求处理得怎么样了。

小伙伴们可以简单地把它理解为服务端对你说的一句 “简短回复”,比如:

  • “没问题,我找到了!”(200)
  • “你这东西我没有!”(404)
  • “服务器出问题了,别催我了…”(500)

对于 HTTP 状态码来说,我们可以根据它的 “第一位数字” 进行分类,主要分为以下 5 种(如下表所示)。

HTTP 状态码的分类
类别 说明
1xx(信息响应) 请求已收到,继续处理即可
2xx(成功响应) 请求成功
3xx(重定向) 需要进一步操作(跳转)
4xx(客户端错误) 请求有问题(比如写错地址、权限不足)
5xx(服务器错误) 服务器处理时出错了

其中,常见的 HTTP 状态码如下表所示。

HTTP 状态码
类别 状态码 说明
1xx(信息响应) 100 继续
101 切换协议
2xx(成功响应) 200 成功
201 已创建
204 无内容
206 部分内容
3xx(重定向) 301 永久重定向
302 临时重定向
304 未修改
4xx(客户端错误) 401 未授权
403 禁止
404 未找到
405 方法不允许
408 请求超时
429 请求过多
5xx(服务端错误) 500 服务器内部错误
502 错误网关
503 服务不可用
504 网关超时

常见的 HTTP 状态码

虽然HTTP 状态码有很多,但在开发中常用的就下面这几个,我们掌握它们就够了。

1. 1xx(信息响应)

1xx 状态码比较少见,一般用于通知客户端。

  • 100 Continue(继续):表示一切正常,客户端可以继续发送剩下的请求内容。
  • 101 Switching Protocols(切换协议):服务器同意切换通信协议,比如从 HTTP 切换到 WebSocket。

2. 2xx(成功响应)

2xx 状态码是最常见最友好的状态码,表示请求成功完成、一切顺利。

  • 200 OK(成功):最常见的状态码,请求成功并返回了数据。
  • 201 Created(已创建):服务器成功创建了一个资源,比如上传文件或提交表单成功。
  • 204 No Content(无内容):请求成功,但服务器没有返回内容(比如删除操作)。
  • 206 Partial Content(部分内容):请求了一部分数据(比如文件的一部分),服务器也只返回这一部分。

3. 3xx(重定向)

3xx 状态码表示要完成请求,需要进一步的操作。通常,这些状态码会附带一个 Location 头,指示客户端需要重定向到的新 URL 。

  • 301 Moved Permanently(永久重定向):资源永久移动到了新地址,客户端应使用新地址。
  • 302 Found(临时重定向):资源临时移动,以后可能还会回来。
  • 304 Not Modified(未修改):客户端缓存的资源是最新的,服务器无需再次发送。

4. 4xx(客户端错误)

4xx 状态码表示请求本身有问题,错误大多出在客户端。

  • 401 Unauthorized(未授权):表示没有提供正确的身份凭证(如登录令牌或密码)。常见情况包括:
    • 没有登录,或者凭证缺失。
    • 登录了,但凭证过期或错误。
    • 登录成功,但权限不足。
  • 403 Forbidden(禁止):你已经登录了,但依然无权访问这个资源。比如一个普通用户想要访问 VIP 用户的页面。
  • 404 Not Found(未找到):这是最常见的错误状态码之一,表示请求的资源在服务器上找不到。比如我们访问一个不存在的页面,就会出现 404。
  • 405 Method Not Allowed(方法不允许):请求方法不对,比如你使用 GET 方法请求了一个只能 POST 的接口。
  • 408 Request Timeout(请求超时):服务器等待客户端发送请求的时间过长。
  • 429 Too Many Requests(请求过多):请求次数太多,被限流了(比如 API 调用过于频繁)。

注意:401 与 403 是不一样的。其中,401 表示身份验证失败(未登录或凭证无效)。而 403 表示已验证身份,但无权限访问。

5. 5xx(服务器错误)

5xx 状态码表示服务器遇到了问题,锅在它不在你。

  • 500 Internal Server Error(服务器内部错误):这是最常见的服务器端错误,表示服务器遇到了一个意外的情况(往往是后端代码自身出了问题),阻止它完成请求。
  • 502 Bad Gateway(错误网关):服务器在作为中转(网关或代理)时,收不到上游服务器的正常响应。常见原因包括:
    • 上游服务器故障:目标服务器宕机、超载或无法响应。
    • 网络问题:网关与上游服务器之间的连接中断或超时。
    • 配置错误:代理服务器(如 Nginx、Cloudflare)配置不当。
    • 防火墙或安全策略:请求被上游服务器的安全机制拦截。
  • 503 Service Unavailable(服务不可用):服务器目前无法处理请求,通常是由于服务器过载或停机维护。不过这通常是暂时的。
  • 504 Gateway Timeout(网关超时):作为网关或代理的服务器,没有及时从上游服务器接收到响应。

上一篇: HTML 特殊字符

下一篇: HTTP 请求方法

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号