作为刚接触网络的小白,你可能经常在浏览器地址栏旁边看到一些数字,或者在开发时遇到类似 "404 Not Found" 的提示。这些就是 HTTP 状态码,它们是服务器给客户端的 "回信",告诉我们请求处理的结果。今天就用生活化的案例,带你认识这些常见的状态码。
一、1xx(信息类状态码)
这类状态码是服务器给的 "临时通知",告诉客户端下一步该怎么做。
- 100 继续案例:你想给网盘上传一个 10GB 的大视频,先发送了请求头询问服务器 "我要传大文件啦,你接得住吗?"。服务器检查后返回 100,意思是 "没问题,传吧!",你这才开始上传视频本体。如果服务器返回其他代码,你就不用白费流量了。
- 101 协议切换案例:你打开一个在线股票网站,需要实时看到股价变动。浏览器先发送 HTTP 请求,并附带 "想换成 WebSocket 协议" 的请求。服务器同意后返回 101,之后你们就用新协议通信,股价数据才能实时推送到你屏幕上。
二、2xx(成功类状态码)
看到这类状态码,就说明事情办成功了!
- 200 成功案例:你在浏览器输入 "www.baidu.com",服务器把百度首页的内容完整返回给你,这时状态码就是 200。平时刷网页、看文章,只要正常显示,基本都是 200。
- 201 创建成功案例:你在购物 APP 上注册新账号,填写信息并提交后,服务器在数据库里新建了你的用户记录,这时会返回 201,告诉你 "账号创建成功啦"。
- 204 成功但无内容案例:你在手机相册里删除了一张云端照片,点击删除按钮后,服务器成功删掉了照片,但不需要返回什么内容给你,就会返回 204,只告诉你 "删完了,没事了"。
- 206 部分内容案例:你下载一部 2 小时的电影,下到 1 小时时网络断了。重新连接后,播放器会请求 "从第 3600 秒开始的内容",服务器只返回后半部分电影,并返回 206,实现断点续传。
三、3xx(重定向类状态码)
这类状态码表示 "你要的东西不在这里,去别的地方找"。
- 301 永久搬家案例:以前大家访问 "www.jd.com",后来京东把主域名换成了"www.jd.com"(假设),当有人访问旧域名时,服务器会返回 301,并告诉浏览器" 这个网站永久搬到新地址了,以后直接去那吧 ",之后浏览器会自动跳转,搜索引擎也会更新记录。
- 302 临时搬家案例:你在电商网站未登录时点击 "我的订单",服务器会先把你转到登录页(返回 302),登录成功后又转到订单页。这种临时跳转就用 302,因为下次登录可能跳转到不同页面。
- 304 未修改,用缓存案例:你昨天看了一篇新闻,今天刷新页面时,服务器检查发现这篇新闻没更新,就返回 304,告诉你 "内容没变,用你昨天存的缓存吧",这样网页加载更快,也省流量。
四、4xx(客户端错误类状态码)
这类状态码说明是 "你(客户端)的问题",服务器没法处理。
- 400 请求错误案例:你在表单里填写生日时写成 "2023-13-32"(13 月不存在),提交后服务器看不懂这个日期格式,就返回 400,告诉你 "你填的数据有问题,重新来"。
- 401 未认证案例:你没登录就直接访问 "个人银行账户" 页面,银行服务器会返回 401,弹出登录框让你输入账号密码,意思是 "先证明你是谁,才能看"。
- 403 禁止访问案例:你用普通账号登录学校教务系统,想进入 "管理员后台" 改成绩,服务器会返回 403,告诉你 "你权限不够,别想了"。
- 404 找不到资源案例:你手滑输错网址 "www.bilibili.com/123456789",而这个页面根本不存在,服务器就返回 404,就是我们常说的" 页面丢了 "。
- 429 请求太频繁案例:你抢演唱会门票时,疯狂点击 "刷新" 按钮,1 分钟点了 200 次,超过了服务器规定的 "每分钟 50 次" 限制,就会返回 429,提示 "操作太频繁,请稍后再试"。
五、5xx(服务器错误类状态码)
这类状态码表示 "是我(服务器)的问题",抱歉没处理好。
- 500 服务器内部错误案例:你在购物网站结算时,服务器代码突然出了 bug,导致订单无法生成,这时会返回 500,就像店员告诉你 "不好意思,我们系统坏了,结不了账"。
- 502 网关错误案例:你通过公司内网访问外部网站,公司的代理服务器(网关)去请求目标网站时,目标网站崩溃了,代理服务器就返回 502,告诉你 "我联系不上那边的服务器"。
- 503 服务暂时不可用案例:双 11 零点时,太多人同时抢优惠,购物 APP 的服务器扛不住了,就会返回 503,显示 "系统繁忙,请稍后再试"。
- 504 网关超时案例:你在 APP 上查快递,APP 的服务器(网关)去问快递公司的服务器要数据,但快递公司的服务器反应太慢,超过了规定时间,APP 服务器就返回 504,告诉你 "等太久了,没拿到数据"。
总结
记住这些状态码的规律其实很简单:
- 1xx:服务器说 "等一下,我告诉你下一步"
- 2xx:服务器说 "搞定了"
- 3xx:服务器说 "去别的地方找"
- 4xx:服务器说 "你做错了"
- 5xx:服务器说 "我做错了"
下次遇到这些数字,对照着想想,就能大概知道问题出在哪啦!