了解什么是HTTP状态码
HTTP状态码是服务器对客户端请求的“标准化回复”,三位数字中第一位代表大类(例如301中的3为一大类),理解它们,能帮你快速定位问题是出在客户端、网络还是服务器。
HTTP状态码分为五大类,分别是1xx-5xx这五个大类别,下面为大家讲解这五个大类代表什么
#1 1xx 信息提示(请求已接收,继续处理)
出现1xx大类报错的其实并不常见,这个大类包含两个状态码,分别是100 Continue和101 Switching Protocols。
100 Continue代表请求头已收到,客户端可继续发送请求体(经常用于大文件上传前的试探)
客户端:我要发个大文件
网站:100(我收到了喵,继续发吧)
而101 Switching Protocols则代表服务器同意切换协议(比如从HTTP升级到WebSocket或者从HTTP到WebSocket)
运维:我要换协议
服务器:彳亍
#2 2xx:成功(请求已成功被服务器接收、理解并处理)✅
所有人最希望看到的返回码(
这个大类包含三个状态码,分别是200 OK、201 Created和204 No Content。
第一个大家应该不陌生,200 OK代表服务器网站一切正常,没有问题(也是大家最希望看到的)
客户端:网站网站,收到请回答!
网站:200 OK
第二个201 Created代表创建成功,常用于POST请求,表示新资源(如新用户、新订单)已被创建。响应头中通常带有Location字段指向新资源URL。
客户端:我要注册个新用户!
网站服务器:okok,201 201!
第三个204 No Content代表搞定了!但是不返回东西,这种一般代表请求成功,不需要刷新
服务器:客户端客户端,我OK了,你那边不用刷新
客户端:200 OK(大雾
#3 3xx:重定向(需要客户端再干点别的事才能完成)🔄
3xx大类不是什么大问题,主要用在域名迁移或缓存相关的内容
3xx大类包含三个状态码,分别是301 Moved Permanently、302 Found和304 Not Modified。
大部分人应该都熟悉第一个状态码,301 Moved Permanently,301代表永久重定向,你的网站地址永久变更了,必应,谷歌,百度这些搜索引擎会更新链接权重,你的浏览器会缓存此跳转。适合域名迁移(比如http→https)
第二个302 Found有一个名字叫临时移动,现在叫临时重定向。主要用在用户注册,登录这些表单类页面,登录页面就是一个临时重定向的页面,登录完下次访问网站还是这个网站,登录状态从未登录到已登录。
304 Not Modified代表缓存有效,服务器会告诉你的浏览器,你手里的缓存没有变化,用你手里的吧。通常用在套了CDN的网站,这不是错误,而且能有效提高网页访问速度。
ok接下来的状态码就是有问题的了
#4 4xx:客户端错误(问题出在请求方,请检查你的请求)❌
这个大类包含的状态码就多了,一共有六个状态码,分别是400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found、405 Method Not Allowed和429 Too Many Requests。
从第一个看,400 Bad Request 翻译过来就是坏请求,服务器读不懂你的语法(如JSON格式错误、参数类型不对等等)。
服务器:这啥啊兄弟?
运维:……
第二个401 Unauthorized的意思是你没登录,通常情况是token过期无法验证你的身份,可修复,重新登录即可
服务器:你怎么证明你是你?
客户端:我有token!!!
第三个403 Forbidden的意思是你被拒之门外了,通常情况是你已经登录了这个网站,但是你的权限不允许你访问它(比如你是一个普通用户,你在尝试访问https://example.com/admin时就会返回这个状态码)
服务器:诶你哪位啊,这不是你能来的地方,出去!
第四个404 Not Found就是著名的“网页丢失”,这种情况要么是站长删库跑路了要么是你打错地址了。
客户端/用户:搜索xxxxx
服务器:不知道别问我我找不到不要压力我了(((
第五个405 Method Not Allowed代表这个方法不允许,意思是客户端用GET请求了只支持POST的接口
客户端:请求资源!
服务器:这啥啊兄弟我用不了啊?
第六个429 Too Many Requests代表服务器压力过大,触发服务器设置的限流规则。通常被CC攻击或DDoS会返回此状态码。这种问题要么先关服务器,要么等流量降下来再访问。
一堆用户:让我进去我是好人!
服务器:补药压力我啊TWT
是不是看完血压上来了?下面还有5xx的呢(
#5 5xx:服务器错误(服务器自己扛不住了,或网关出问题)💥
这个大类有四个状态码,分别是500 Internal Server Error、502 Bad Gateway、503 Service Unavailable和504 Gateway Timeout。
依旧从第一个开始,500 Internal Server Error代表服务器内部错误,也就是“服务器挂了”,具体原因看后端日志(如代码报错、数据库连不上)。
客户端:我要访问网站。
服务器:bro我找不到数据库了(
第二个502 Bad Gateway代表网关错误,反向代理(如Nginx)收到了上游服务器(如Tomcat)返回的无效响应(通常上游服务挂了或超时)。
客户端:依旧请求访问网站。
服务器:呃呃呃上面的老哥你怎么似了(
第三个503 Service Unavailable代表服务不可用,意思是服务器过载了或正在停机维护。
客户端:我又来了嘿
服务器:……
客户端:服务器?
服务器:……
客户端:


评论(4)