HTTP常用状态码详解

118 阅读4分钟

HTTP 状态码其实就像人与人之间的沟通信号,它能快速告诉你事情的结果是好是坏、接下来该怎么办。如果把状态码分成几类来看,就会发现它们其实挺简单,每类都有自己的“性格”。接下来,我就用更直白的方式来说说这些状态码,顺便举些实际的例子。


1xx:信息性状态码

这类状态码就像是服务器在说:“别急,还在处理呢!”
含义:告诉客户端请求正在处理中,需要继续等待。
场景:适用于长连接或者分块传输的场景。

举个例子

  • 你上传一个超大的视频文件到服务器,服务器会先发一个 100 Continue 给你,意思是你上传没问题,可以继续传。
  • 如果你提交了一个复杂的表单,服务器可能会返回 102 Processing,告诉你:“我正在处理你的请求,稍等一会儿。”

2xx:成功状态码

这类状态码就像一句“完美!”,表示一切顺利。
含义:请求成功处理了。
场景:网页加载、API 请求成功、文件下载等。

举个例子

  • 当你打开一个网站时,浏览器收到 200 OK,意思是:“页面加载成功,尽情浏览吧!”
  • 如果你用手机 App 调用天气 API,服务器返回 200 OK 和天气数据,说明你的请求得到了正确的回应。

3xx:重定向状态码

这类状态码就像是在说:“哎,你要找的东西不在这里,去那边看看吧!”
含义:资源位置变了,需要跳转到新地址。

举个例子

  • 假设你收藏了一个博客链接,但博主把文章移到了新地址。当你访问旧链接时,服务器会返回 301 Moved Permanently,然后浏览器自动跳转到新地址。
  • 再比如,你访问一个网站时,服务器返回 302 Found,意思是临时跳转,可能是因为网站正在进行维护。

4xx:客户端错误状态码

这类状态码就像是服务器在吐槽:“喂,你请求有问题!”
含义:客户端请求有问题,服务器无法处理。

举个例子

  • 400 Bad Request:你提交表单时,忘记填写必填项,服务器就会返回这个状态码,提示你检查输入。
  • 401 Unauthorized:你访问一个需要登录的页面,但没登录,服务器会告诉你:“请先登录!”
  • 403 Forbidden:你尝试访问一个只有管理员才能看的页面,服务器会返回 403 Forbidden,意思是:“你没权限。”
  • 404 Not Found:你访问的链接拼错了或者资源被删除了,服务器会说:“对不起,没找到你要的东西。”

5xx:服务器错误状态码

这类状态码就像是服务器在道歉:“哎呀,是我的问题,对不起!”
含义:服务器出问题了,无法完成请求。

举个例子

  • 500 Internal Server Error:你提交一个表单,结果服务器突然崩溃了,返回这个状态码,意思是:“服务器内部出问题了。”
  • 502 Bad Gateway:你访问一个网站时,服务器返回 502 Bad Gateway,可能是后端服务挂了。
  • 503 Service Unavailable:你访问一个热门网站,服务器负载太高,返回 503 Service Unavailable,提示你稍后再试。
  • 504 Gateway Timeout:你调用一个 API,但后端服务响应太慢,服务器会返回 504 Gateway Timeout,意思是:“等不及了,超时了。”

总结:快速记忆小技巧

如果把这些状态码简化一下,可以这样记:

  • 200:请求成功,万事大吉。
  • 301:资源永久移动,换个地方找。
  • 400:你的请求有问题,检查一下。
  • 401:需要登录,别忘了带上凭证。
  • 403:你没权限,别乱逛。
  • 404:资源不存在,可能是链接错了。
  • 500:服务器内部出问题了,可能是代码 bug。
  • 502:网关收到无效响应,可能是后端挂了。
  • 503:服务器暂时不可用,稍后再试。
  • 504:网关超时了,后端太慢。

理解这些状态码不仅能帮助开发者快速定位问题,还能让普通用户在遇到问题时知道怎么回事。比如,下次看到 404,你就知道是链接有问题,而不是服务器出问题了。是不是简单多了?