HTTP状态码:小白友好版讲解

124 阅读6分钟

HTTP状态码其实就是服务器给浏览器(或者其他客户端)的“回信” ,告诉客户端“你的请求我收到了,现在是这么个情况”。

想象你去餐厅吃饭:

  • 你(客户端)看菜单点菜(发送请求)。
  • 服务员(服务器)收到你的点单,会给你一些反馈(状态码)。

这些状态码都以 1xx、2xx、3xx、4xx、5xx 开头,每个数字段代表一类“情况”。下面我用大白话给你解释:


1xx:信息类 - “我知道了,你继续说”

这就像服务员对你说:“我听着呢,请继续你的点单。”

  • 100 Continue (继续)

    • 大白话:服务器说“我已经收到你的请求头了,没问题,你可以把剩下的请求内容(比如你要上传的大数据、表单详细信息)发过来吧。”
    • 场景:比如你上传一个大文件,浏览器先给服务器打个招呼(发请求头),服务器说“Continue”,浏览器才开始发文件内容。

2xx:成功类 - “搞定!”

这就像服务员对你说:“您点的菜没问题,正在做 / 已经好了!”

  • 200 OK (正常返回)

    • 大白话:服务器说“完美!你的请求我完全理解了,也处理好了,这是你要的东西(网页、数据等)。”
    • 场景:你在浏览器里输入网址,按回车,服务器返回网页给你,通常就是200。
  • 201 Created (已创建)

    • 大白话:服务器说“太棒了!你的请求不仅成功了,我还根据你的请求新建了一个资源。”
    • 场景:比如你在某个网站注册新用户,服务器成功创建了你的账户,就可能返回201。
  • 202 Accepted (已接受)

    • 大白话:服务器说“我收到你的请求了,知道要做什么了,但是现在还没做完,我会处理的,你先等着。”
    • 场景:比如你提交了一个需要后台慢慢处理的任务(像批量发送邮件),服务器先告诉你“任务已接收,正在排队处理”。

3xx:重定向类 - “请你换个地方”

这就像服务员对你说:“不好意思,你点的这个菜我们这边没有了,你去隔壁那家分店点吧 / 我们搬到新地址了,你去新地址。”

  • 301 Moved Permanently (永久移动)

    • 大白话:服务器说“你访问的这个网页/资源,已经永久搬到新地址了,以后你就直接去新地址找吧,别再来老地方了。”
    • 场景:比如一个网站域名换了,老域名的所有请求都会被服务器告诉浏览器“去新域名吧”,而且是永久性的。
  • 302 Found (临时移动)

    • 大白话:服务器说“你要的东西现在不在这儿,临时在另一个地址,你去那儿看看。但这只是暂时的,下次可能又回来了。”
    • 场景:比如网站正在搞活动,你访问首页,临时被转到活动页面。活动结束后,可能又会转回原来的首页。
  • 303 See Other (查看其他位置)

    • 大白话:和302有点像,也是临时换个地方。但它明确告诉你:“你用GET方法去新的URI看看吧。”(GET是一种请求方式,通常用于获取数据)
    • 场景:比如你提交一个表单(比如评论)成功后,服务器让你“See Other”到一个“评论成功”的提示页面。
  • 304 Not Modified (未修改)

    • 大白话:服务器说“我记得你!你之前来过,并且问过这个资源。它从你上次来之后就没改过,你直接用你本地存的那份(缓存)就行,不用我再发一遍了,省流量省时间。”
    • 场景:你第二次访问同一个网页,浏览器会问服务器“这个页面有更新吗?”服务器一看没更新,就返回304,浏览器就直接显示你上次存的页面。

4xx:客户端错误类 - “你的问题!”

这就像服务员对你说:“不好意思,你点的菜名我看不懂 / 你没付钱 / 这个菜不卖!”(问题出在你身上)

  • 400 Bad Request (错误请求)

    • 大白话:服务器说“你发过来的请求乱七八糟的,我完全看不懂,没法处理。你别再发一模一样的了,先检查一下你的请求格式对不对。”
    • 场景:比如你填一个在线表单,格式填错了(比如手机号填了字母),服务器可能就返回400。
  • 401 Unauthorized (未授权)

    • 大白话:服务器说“你想访问的这个东西需要权限!你还没登录吧?或者你登录了,但权限不够。先去登录/验证身份!”
    • 场景:你没登录就想直接访问某个网站的个人中心页面,服务器就会返回401,通常会让你跳转到登录页面。
  • 403 Forbidden (禁止访问)

    • 大白话:服务器说“我知道你是谁(可能你登录了),但是!就算你登录了,这个东西你也绝对不能访问,我禁止你访问!没商量!”
    • 场景:比如你试图访问网站管理员的后台页面,但你没有管理员权限,就会收到403。
  • 404 Not Found (未找到)

    • 大白话:服务器说“你要找的这个URI(网址)对应的资源,我这儿压根儿就没有!是不是你记错地址了?”
    • 场景:这是最常见的!你输错网址,或者访问一个已经被删除的网页,就会看到那个经典的“404页面找不到”。

5xx:服务器错误类 - “我的问题,对不起”

这就像服务员对你说:“不好意思,我们厨房着火了 / 厨师都请假了,暂时做不了菜。”(问题出在服务器身上)

  • 500 Internal Server Error (内部服务器错误)

    • 大白话:服务器说“哎呀!我内部出故障了!具体啥故障我也说不清,反正就是处理不了你的请求。这是我最常见的毛病了。”
    • 场景:服务器程序写得有bug,或者数据库出问题了,就可能返回500。
  • 503 Service Unavailable (服务不可用)

    • 大白话:服务器说“对不起啊,我现在太忙了(过载),或者正在维护升级,暂时没法处理你的请求。你过一会儿再试试吧。”
    • 场景:某个网站突然爆火,访问人数太多,服务器扛不住了,就可能返回503;或者网站公告说“几点到几点维护”,那段时间访问就可能是503。

总结一下,记个大概就行:

  • 2xx:开心!成功了!
  • 3xx:跑!去别的地方看看!
  • 4xx:我的锅?(检查一下我输的网址对不对,有没有登录等)
  • 5xx:它的锅!(服务器那边出问题了,等会儿再试吧)