一起来撸猫好猫就是好猫(先有猫后有HTTP)(1)

原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。

说句让你揪心的话。之所以你定下的状态码,小伙伴们记不住。不是说你定义的不好,而是大家并不想在这上面浪费时间。而HTTP即使那么复杂,大家还是去学习它,就是因为此协议比你的应用面广。

没有困难的状态码,只有勇敢的猫咪。http很复杂,遇到不明白的code,就要请猫咪来帮忙。

在http://http.cat 这个网站上,就有一群可爱的猫咪,用它们的生命对这些状态进行着解释。本文的所有图片,都来自于这个网站。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(2)

常用的301 (常用)

301是常用的状态码,意思是资源被移动了,这是一个对搜索引擎非常友好的状态码,建议使用。

不好意思,我已经移居到有沙滩有海洋的海滨城市,请你不要再打扰我。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(3)

304 (常用)

304是使用频率非常高的状态码,因为它与计算机性能优化中的一个巨无霸有着关联:缓存。304意味着浏览器缓存了服务器的副本,不需要下载就能查看。

当然,缓存也是不一致的万恶之源,你要强制刷新才能让整个世界统一。

悄悄看,我们是不是长得一样?

一起来撸猫好猫就是好猫(先有猫后有HTTP)(4)

401

用户需要身份认证才能访问资源。

可怜的猫咪,被拒绝在门外。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(5)

403

用户没有授权,表示没有权限访问资源。

不要尝试你没有能力获取的东西,这很危险。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(6)

404

这个都懂,就连小朋友都懂。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(7)

418

我就是个杯具。

没有茶壶的http协议不是完整的协议。 当客户端给一个茶壶发送泡咖啡的请求时,茶壶就返回一个418错误状态码,表示“我是一个茶壶”。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(8)

500

服务器内部错误,很笼统的一个错误码。是服务端的同学最惧怕的错误码。

要拖出这只猫而不受损伤,要费点功夫。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(9)

503

表示服务器暂时处于超负载或正在进行停机维护,无法处理请求。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(10)

204

表示客户端发送给客户端的请求得到了成功处理,但在返回的响应报文中不含实体的主体部分,也就是没有资源可以返回。

没有猫粮,这完全饿坏了它们。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(11)

450

呃呃呃,家长控制. 你需要证明你是18 .

这样的猫很少.

一起来撸猫好猫就是好猫(先有猫后有HTTP)(12)

3xx300

300是多种选择的意思,指的是服务器可以执行多种操作。这个状态码很少用,我甚至现在都不知道它用在什么场景下。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(13)

302

相对于301,302是临时移动的意思。

我想有个家,可是却一直在路上。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(14)

303

303表示这个请求对应的资源,存在另外一个URI。对于POST请求,它表示请求已经被处理,客户端可以接着使用GET方法去请求Location里的URI。

知道图中的这只猫是什么名场面么?它就是薛定谔的猫。说实话,我从来没用过这个状态码,也从来没有抓到过,所以过多的解释我觉得也没有必要了。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(15)

305

表示被请求的资源必须通过指定的代理才能被访问。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(16)

307

303 和 307 是 HTTP1.1 新加的服务器响应文档的状态码,是对302状态的细化。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(17)

308

308与301定义一致,唯一的区别在于,308状态码不允许浏览器将原本为POST的请求重顶到GET请求上。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(18)

4xx400

400是服务端返回的,告诉客户端它发送了一条异常的请求。比如语义有误,请求参数有误等。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(19)

402

意思是,宝贝,你需要付钱了。

付钱,就可以进入我。

这么赤裸裸的讨饭举动,自然用的很少。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(20)

405

方法不被允许。比如写爬资源的时候,很多静态资源都不会响应Post请求。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(21)

406

这种做法,不可接受。表示客户端无法解析服务端返回的内容。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(22)

407

你需要登录代理才能访问我的资源。类似于401。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(23)

408

请求发生了错误。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(24)

409

由于和被请求的资源的当前状态之间存在冲突,请求无法完成。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(25)

410

被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址。

真是可怜的状态, 我已经无家可归.

一起来撸猫好猫就是好猫(先有猫后有HTTP)(26)

411

如果你没有定义Content-Length请求头,那么我就拒绝你的请求。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(27)

412

服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(28)

413

请求实体太大!

虽然我长得胖承受力强,但也请你温柔

一起来撸猫好猫就是好猫(先有猫后有HTTP)(29)

414

请求的URI 长度超过了服务器能够解释的长度,因此服务器拒绝对该请求提供服务。

这么长,不会用post模式啊.

一起来撸猫好猫就是好猫(先有猫后有HTTP)(30)

415

请求提交的格式 , 不被支持.

一起来撸猫好猫就是好猫(先有猫后有HTTP)(31)

416

这个状态码与If-Range请求头有关.

HTTP 协议范围请求允许服务器只发送 HTTP 消息的一部分到客户端。范围请求在传送大的媒体文件,或者与文件下载的断点续传功能搭配使用时非常有用。

意思是你传的不对,或者服务器资源有变.

一起来撸猫好猫就是好猫(先有猫后有HTTP)(32)

417

又是一个偏门请求头Expect相关的状态码. 意思是这个请求参数不满足服务端的需要.

一起来撸猫好猫就是好猫(先有猫后有HTTP)(33)

422

请求格式正确,但是由于含有语义错误,无法响应。

真是让猫无奈啊

一起来撸猫好猫就是好猫(先有猫后有HTTP)(34)

423

当前资源被锁定。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(35)

424

由于之前的某个请求发生的错误,导致当前请求失败,例如 PROPPATCH。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(36)

425

不知道干啥用的 , 但它就是存在 !

一起来撸猫好猫就是好猫(先有猫后有HTTP)(37)

426

客户端应当切换到TLS/1.0。这是协议升级

一起来撸猫好猫就是好猫(先有猫后有HTTP)(38)

429

当你需要限制客户端请求某个服务的数量,也就是限制请求速度时,该状态码就会非常有用。

慢点吃,猫粮不够了 !

一起来撸猫好猫就是好猫(先有猫后有HTTP)(39)

431

请求头字段太大

一起来撸猫好猫就是好猫(先有猫后有HTTP)(40)

444

木有响应

一起来撸猫好猫就是好猫(先有猫后有HTTP)(41)

451

因法律原因不可用

一起来撸猫好猫就是好猫(先有猫后有HTTP)(42)

497

转到https接口

一起来撸猫好猫就是好猫(先有猫后有HTTP)(43)

498

一起来撸猫好猫就是好猫(先有猫后有HTTP)(44)

499

客户端关闭了一个请求!

一起来撸猫好猫就是好猫(先有猫后有HTTP)(45)

5xx501

服务器不支持当前请求所需要的某个功能。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(46)

502

错误的网关

一起来撸猫好猫就是好猫(先有猫后有HTTP)(47)

504

网关超时

一起来撸猫好猫就是好猫(先有猫后有HTTP)(48)

506

是506错误是因为服务器没有正确配置。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(49)

508

检测到了循环啊,兄弟

一起来撸猫好猫就是好猫(先有猫后有HTTP)(50)

509

服务器宽带达到了瓶颈

一起来撸猫好猫就是好猫(先有猫后有HTTP)(51)

510

客户端需要对请求进一步扩展,服务器才能实现它。从来没遇到过.

一起来撸猫好猫就是好猫(先有猫后有HTTP)(52)

511

要求网络认证. 比如你登录了一个需要验证密码才能访问的wifi

一起来撸猫好猫就是好猫(先有猫后有HTTP)(53)

521

中文的意思很美好, 但可惜的是它是5开头的. 那么结局就可想而知

一起来撸猫好猫就是好猫(先有猫后有HTTP)(54)

523

源头不可达

一起来撸猫好猫就是好猫(先有猫后有HTTP)(55)

525

ssl握手失败

一起来撸猫好猫就是好猫(先有猫后有HTTP)(56)

599

连接已关闭

一起来撸猫好猫就是好猫(先有猫后有HTTP)(57)

2xx201

成功请求并创建了新的资源

一起来撸猫好猫就是好猫(先有猫后有HTTP)(58)

202

服务器已接受请求,但尚未处理

一起来撸猫好猫就是好猫(先有猫后有HTTP)(59)

203

不懂.

一起来撸猫好猫就是好猫(先有猫后有HTTP)(60)

206

表示该服务器已经成功处理了部分 GET 请求。迅雷这类的 HTTP下载工具都是使用此类响应实现断点续传或者将一个大文档分解为多个下载段同时下载。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(61)

1xx100

请求者应当继续提出请求。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(62)

101

表示切换协议。

一起来撸猫好猫就是好猫(先有猫后有HTTP)(63)

102

处理中

一起来撸猫好猫就是好猫(先有猫后有HTTP)(64)

End

所有的协议,在发展的过程中,都充满了坎坷。它不仅要有前瞻性,在升级的时候,也要考虑兼容性等因素,最后的协议往往是个大杂烩,充满了恶意的细节。TCP算一个,HTTP作为万维网的基础协议,当然也算一个。

常用的, 其实就那么几个. 只是先人们考虑的太多, 才造成了状态码的爆炸。 就如同无聊的418状态码, 体现了先人们蛋疼的前瞻性。

人有远虑, 才有近忧。

推荐阅读:

1. 玩转Linux2. 什么味道专辑

3. 蓝牙如梦4. 杀机!5. 失联的架构师,只留下一段脚本6. 架构师写的BUG,非比寻常

,