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:它的锅!(服务器那边出问题了,等会儿再试吧)