一起来撸猫好猫就是好猫(先有猫后有HTTP)
原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。
说句让你揪心的话。之所以你定下的状态码,小伙伴们记不住。不是说你定义的不好,而是大家并不想在这上面浪费时间。而HTTP即使那么复杂,大家还是去学习它,就是因为此协议比你的应用面广。
没有困难的状态码,只有勇敢的猫咪。http很复杂,遇到不明白的code,就要请猫咪来帮忙。
在http://http.cat 这个网站上,就有一群可爱的猫咪,用它们的生命对这些状态进行着解释。本文的所有图片,都来自于这个网站。
常用的301 (常用)
301是常用的状态码,意思是资源被移动了,这是一个对搜索引擎非常友好的状态码,建议使用。
不好意思,我已经移居到有沙滩有海洋的海滨城市,请你不要再打扰我。
304 (常用)
304是使用频率非常高的状态码,因为它与计算机性能优化中的一个巨无霸有着关联:缓存。304意味着浏览器缓存了服务器的副本,不需要下载就能查看。
当然,缓存也是不一致的万恶之源,你要强制刷新才能让整个世界统一。
悄悄看,我们是不是长得一样?
401
用户需要身份认证才能访问资源。
可怜的猫咪,被拒绝在门外。
403
用户没有授权,表示没有权限访问资源。
不要尝试你没有能力获取的东西,这很危险。
404
这个都懂,就连小朋友都懂。
418
我就是个杯具。
没有茶壶的http协议不是完整的协议。 当客户端给一个茶壶发送泡咖啡的请求时,茶壶就返回一个418错误状态码,表示“我是一个茶壶”。
500
服务器内部错误,很笼统的一个错误码。是服务端的同学最惧怕的错误码。
要拖出这只猫而不受损伤,要费点功夫。
503
表示服务器暂时处于超负载或正在进行停机维护,无法处理请求。
204
表示客户端发送给客户端的请求得到了成功处理,但在返回的响应报文中不含实体的主体部分,也就是没有资源可以返回。
没有猫粮,这完全饿坏了它们。
450
呃呃呃,家长控制. 你需要证明你是18 .
这样的猫很少.
3xx300
300是多种选择的意思,指的是服务器可以执行多种操作。这个状态码很少用,我甚至现在都不知道它用在什么场景下。
302
相对于301,302是临时移动的意思。
我想有个家,可是却一直在路上。
303
303表示这个请求对应的资源,存在另外一个URI。对于POST请求,它表示请求已经被处理,客户端可以接着使用GET方法去请求Location里的URI。
知道图中的这只猫是什么名场面么?它就是薛定谔的猫。说实话,我从来没用过这个状态码,也从来没有抓到过,所以过多的解释我觉得也没有必要了。
305
表示被请求的资源必须通过指定的代理才能被访问。
307
303 和 307 是 HTTP1.1 新加的服务器响应文档的状态码,是对302状态的细化。
308
308与301定义一致,唯一的区别在于,308状态码不允许浏览器将原本为POST的请求重顶到GET请求上。
4xx400
400是服务端返回的,告诉客户端它发送了一条异常的请求。比如语义有误,请求参数有误等。
402
意思是,宝贝,你需要付钱了。
付钱,就可以进入我。
这么赤裸裸的讨饭举动,自然用的很少。
405
方法不被允许。比如写爬资源的时候,很多静态资源都不会响应Post请求。
406
这种做法,不可接受。表示客户端无法解析服务端返回的内容。
407
你需要登录代理才能访问我的资源。类似于401。
408
请求发生了错误。
409
由于和被请求的资源的当前状态之间存在冲突,请求无法完成。
410
被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址。
真是可怜的状态, 我已经无家可归.
411
如果你没有定义Content-Length请求头,那么我就拒绝你的请求。
412
服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。
413
请求实体太大!
虽然我长得胖承受力强,但也请你温柔
414
请求的URI 长度超过了服务器能够解释的长度,因此服务器拒绝对该请求提供服务。
这么长,不会用post模式啊.
415
请求提交的格式 , 不被支持.
416
这个状态码与If-Range请求头有关.
HTTP 协议范围请求允许服务器只发送 HTTP 消息的一部分到客户端。范围请求在传送大的媒体文件,或者与文件下载的断点续传功能搭配使用时非常有用。
意思是你传的不对,或者服务器资源有变.
417
又是一个偏门请求头Expect相关的状态码. 意思是这个请求参数不满足服务端的需要.
422
请求格式正确,但是由于含有语义错误,无法响应。
真是让猫无奈啊
423
当前资源被锁定。
424
由于之前的某个请求发生的错误,导致当前请求失败,例如 PROPPATCH。
425
不知道干啥用的 , 但它就是存在 !
426
客户端应当切换到TLS/1.0。这是协议升级
429
当你需要限制客户端请求某个服务的数量,也就是限制请求速度时,该状态码就会非常有用。
慢点吃,猫粮不够了 !
431
请求头字段太大
444
木有响应
451
因法律原因不可用
497
转到https接口
498
499
客户端关闭了一个请求!
5xx501
服务器不支持当前请求所需要的某个功能。
502
错误的网关
504
网关超时
506
是506错误是因为服务器没有正确配置。
508
检测到了循环啊,兄弟
509
服务器宽带达到了瓶颈
510
客户端需要对请求进一步扩展,服务器才能实现它。从来没遇到过.
511
要求网络认证. 比如你登录了一个需要验证密码才能访问的wifi
521
中文的意思很美好, 但可惜的是它是5开头的. 那么结局就可想而知
523
源头不可达
525
ssl握手失败
599
连接已关闭
2xx201
成功请求并创建了新的资源
202
服务器已接受请求,但尚未处理
203
不懂.
206
表示该服务器已经成功处理了部分 GET 请求。迅雷这类的 HTTP下载工具都是使用此类响应实现断点续传或者将一个大文档分解为多个下载段同时下载。
1xx100
请求者应当继续提出请求。
101
表示切换协议。
102
处理中
End
所有的协议,在发展的过程中,都充满了坎坷。它不仅要有前瞻性,在升级的时候,也要考虑兼容性等因素,最后的协议往往是个大杂烩,充满了恶意的细节。TCP算一个,HTTP作为万维网的基础协议,当然也算一个。
常用的, 其实就那么几个. 只是先人们考虑的太多, 才造成了状态码的爆炸。 就如同无聊的418状态码, 体现了先人们蛋疼的前瞻性。
人有远虑, 才有近忧。
推荐阅读:
1. 玩转Linux2. 什么味道专辑
3. 蓝牙如梦4. 杀机!5. 失联的架构师,只留下一段脚本6. 架构师写的BUG,非比寻常
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com