今天我想与你分享一个在字节跳动面试中与 HTTP 状态码相关的真实考题:“HTTP 常见的状态码有哪些?”下面将详细探讨这一主题。

HTTP 状态码是用于描述 HTTP 请求结果的数字代码。其中,2xx 状态码通常表示请求已成功处理。

图片

1xx 信息性状态码

1xx 状态码主要用于提供信息,通常在日常开发中不常遇到,因此我们可以选择暂时不深入探讨这一部分。

2xx 成功状态码

  • 200 OK :表示请求已成功处理。这是日常开发中最常见的状态码,例如,当我们向服务器发送查询用户数据的请求,若服务器返回了正确的用户信息,则会返回200。
  • 201 Created :请求已成功处理,并且服务器创建了一个新的资源。例如,使用 POST 请求创建新用户时,返回201。
  • 202 Accepted :服务器已接收请求,但尚未处理请求的结果。
  • 204 No Content :服务器成功处理了请求,但没有返回任何内容。

特别需要强调的是204状态码。在实际应用中,我们可能并不常见,但它在特定情况下非常重要。根据HTTP RFC 2616的描述:

服务器已完成请求,但无需返回实体主体,可能希望返回更新后的元信息。响应可以包含新或更新的元信息,通常与所请求的变体相关联。

简单来说,204状态码用于表明我们已成功向服务器发送请求,仅仅关心处理结果是否成功,例如问一个女孩:“我能追你吗?”若她回答:“好!”,这就是一个成功的204响应。

3xx 重定向状态码

  • 301 Moved Permanently :资源已被永久重定向,例如,当网站更改了地址时。
  • 302 Found :资源暂时重定向到另一个地址,例如,某些资源被临时转移。

4xx 客户端错误状态码

  • 400 Bad Request :请求存在问题,例如请求参数不合法或请求方法错误。
  • 401 Unauthorized :请求未经过认证,且需认证才能访问的资源。
  • 403 Forbidden :服务器拒绝处理请求,通常用于非法请求。
  • 404 Not Found :请求的资源在服务器上未找到,例如请求的用户信息不存在。
  • 409 Conflict :请求的资源与服务器当前状态发生冲突,因此无法处理请求。

5xx 服务器错误状态码

  • 500 Internal Server Error :服务器内部出错,通常是由于服务器代码中的Bug导致的异常情况。
  • 502 Bad Gateway :网关将请求转发到服务器,但服务器返回了错误响应。

参考资料: