编程语言只是一种工具,它不应该成为我们技术前进之路上的壁垒。

Http 状态码 1xx 2xx 3xx 4xx 5xx 还搞不懂?直接撸 HTTP Protocol 吧

HTTP Protocol 1.1 RFC 2616 的 PDF 文档地址:https://www.w3.org/Protocols/HTTP/1.1/rfc2616.pdf

为什么突然想到要放 HTTP protocol 上来?挺巧的,刚刚逛博客园的时候好像服务器出了点问题,报了 502 bad gateway,想起去年去了某家境外电商面试问到了 http status codes,当时还没有收藏到 w3org HTTP protocol,所以像我这样懒得死记硬背的人居然在这块连记一两个常用的 http status codes 的来源都没有(现在网上不负责任的出处实在太多了),因此当时问完这个 http code 面试就直接结束了,记忆犹新......

 

PDF 前面是目录,拉到目录就可以看到 1xx ~ 5xx 这五种数字开头的错误码分类到底是什么。如果你用是 Chrome 浏览器,用目录提示的页码快速查阅: ctrl + F 输入 “page 10” 回车就可以跳到第 10 页,因为 PDF 文档每页都有注脚而且可以被搜到。

 

在学习 http status codes 时,我觉得仍然不应该死记硬背。就如 page 45 页提到的“503 Service Unavailable”,它可能的原因是“服务过载后的拒绝策略响应”、“服务正在维护”,在下面的 note 注释中还提到另一种可能“虽然服务器没有过载,但它的拒绝策略已经启动,所以后续连接都可能被返回 503 status code message”,这台服务器可能还有其他的资源服务要运行,因此它的拒绝策略在资源利用达到某一个阈值后直接开启,避免影响其他服务的性能。

 

所以其实要分析所有的 http status code 也算是一个不小的工程,举个例子,503 状态码其中一个原因是“服务器正在维护”,“维护”到底是个什么意思?服务实例下线?这种情况下可不可以返回其它的状态码比如 504 Gateway Timeout?而在 504 状态码的 note 中也提到某些服务器在 504 状态发生时会选择回复 400 或 500 状态码,这又是另一种实现的选择,所以死记硬背在 http status code 上是根本行不通的......除非你还是入行一年以内的初级开发者,这时候背一些API和原理会让你在面试时听感更好,面试官会觉得你真的有在学习并掌握了一些东西......

 

posted on 2019-09-06 12:09  独角没有戏  阅读(2624)  评论(0编辑  收藏  举报

导航