其他

记得被 404 支配的恐惧么?

2018-01-17 差评君 差评


404

Not Found



差友们,平时上网最讨厌看到啥?


差评君觉得,应该是这货没啥争议 ↓↓


这几乎是互联网时兴以来,每个人都无法避免会遇到的问题。


404 这三个数字好像网络之神赐给每个信众的礼物~


无论你是亿万富翁还是国家总统,网页打不开就是打不开,啥招也没用。。


神说,要有 404,于是有了。。


可是,为什么网页打不开,网页上都会显示 404 呢?


传说,互联的发明者蒂姆·伯纳斯-李( Tim Berners-Lee )曾经在瑞士的欧洲核研究组织的 404 房间办公,在这个 404 房间有互联网时代的第一个服务器,人们所有的网络请求都会发向那里。


大型强子对撞机就是这个欧洲核研究组织的


如果你要访问的网络内容不存在,那个服务器就会给你返回 404 Not Found( 404 找不到资源)。。


也不知道这个来由是从哪冒出来的,反正越传越广,最后连互联网的发明者罗伯特·卡利奥(Robert Cailliau)都不得不站出来澄清:造谣也要遵循基本法好吧,404 就是因为按顺序轮到 404 了而已。。


其实,现在互联网网页都遵循 HTTP 协议(HyperText Transfer Protocol,超文本传输协议),我们每个人需求的网页内容都存储在一个个服务器上,这些储存着 HTML 文件和图像。


当服务器检测到有用户给它发送打开网页的请求,服务器就会返回给那个用户一些东西,包括网页状态以及返回的内容(如请求的文件、错误消息、或者其它信息)。


一个 HTTP 响应示例


上面这个图,就是一个 HTTP 返回的例子,那个红框框起来的,里面有一个东西叫做 “ 返回状态码 ”,这个返回状态码就代表了这个网页状态。


譬如,这个例子的网站的返回码是 200,也就是说,这个网站能够被成功访问~


2XX 的返回码表示网页请求成功


估计大家也看到了,4 开头的状态码就是错误码,返回 4XX 的,这个网页肯定打不开~


404 就是其中一种错误的代号。。


当服务器找不到用户请求的网页数据,而且并不知道错误原因,才会显示返回一个 404。


出现 404 错误之后,网页显示什么内容,全看状态后面跟着什么消息体(看上面倒数第三个图)。有的网站就写着 “ 网页找不到 ”,而有的网站就会埋一些彩蛋~


Magic Leap 的 404 网站

去年 9 月有网友发现,在 Magic Leap 写着 “ 错误 404 ” 的页面上,一个电灯泡闪烁的频率为摩斯密码,破译后得出的结果正好是鲸鱼座中一颗星星的准确坐标,而这颗星星在每年12月时最明显,网友得出结论: Magic Leap 产品可能会在 12 月正式亮相!果然,Magic Leap 在去年 12 月发布了第一款产品。。(这特么也可以??)


那网页出现 404 就一定是因为服务器无法找到用户请求么?


天真!


也有可能服务器了解你的请求,服务器也有相应的内容,但由于某种奇怪的原因,它被禁止回应你的请求。


这时候本来服务器应该回一个 403 和无法返回数据请求的原因,但是它肯定不想被你发现它故意不给你数据,所以,它很有可能就回你一个 404 Not Found,假装自己没有这个数据。。


RFC2616 HTTP/1.1 协议里关于 403 的描述


不只是 403 ,还有 500 (服务器遇到意外情况,unexpected condition..),都有可能因为服务器懒得跟你解释发生错误的原因,就干脆甩给你一个 404 错误。。


是不是突然想明白好多事?


就像前面说的一样, 404 只是 HTTP 协议里面的一种返回码,这些返回码能让开发者知道网络连接错误的原因。


如果你想在国内看 YouTube 等网站,浏览器会显示 “ 无法访问此网站


这种情况下,我们根本无法连接到相应的服务器上,连返回的状态码都没有。。


这个完全可以通过浏览器自带的开发者工具看出来~


打个比方,使用不了谷歌好像是你的电话线被拔了,电话根本打不出去;而 404 好比是你电话打出去了,可是那头跟你反馈用户无法接通。。


所以说上不了谷歌和 404 压根一点关系都没有,是你的网不够科学~


HTTP 协议里一共规定了 66 个标准 HTTP 状态返回码,每个都有自己的场景应用,可是有一个是异类。。


418 返回码!

 I'm  a teapot?我是个茶壶??


WTF??


其实,这是 1998 年愚人节的时候发布的一个搞笑 RFC 协议(RFC 2324 - Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)),超文本咖啡壶控制协议。


里面主要围绕一个论题展开:虽然咖啡无处不在,但如果你给一个茶壶发送泡咖啡的请求,那肯定是不行的。。


鬼知道这些程序员都在想些什么奇怪的东西。。。


如果你一定要给茶壶发送这个请求,茶壶就会给你返回一个 “ I'm a teapot ” 的错误码 418 ,表示我只是一个茶壶,并不能泡咖啡~


就这么一个愚人节玩笑,那帮技术宅居然一本正经的写了 10 页文档(网址在这,自己戳:https://tools.ietf.org/html/rfc2324)。。


更骚的是,他们还出了续集。。


因为之前那个 RFC 2324 超文本咖啡壶控制协议只描写了对咖啡壶的规范,这对只喝茶的人赤裸裸的歧视!


所以,2014 年愚人节,他们又发布了 RFC 7168(The Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances),超文本咖啡壶控制协议之茶版本扩展。


就喜欢你们一本正经的胡说八道的样子


里面详细的描述了如何使用联网设备,实践各种各样复杂的茶冲泡工艺。


连里边放的调味种类分类都细致的不行。。


差评君服了。。只提一个小小的建议,貌似这里冲茶的工艺有些偏西方,大部分中国人是没有在茶里面放糖的习惯,所以我建议对泡茶种类做一个划分,什么铁观音、大红袍、普洱之类的。


今年愚人节再出一个补充版吧~


有人问了, HTTP 返回码就已知的那么几个么?


当然不是了。。其实只要程序员有心,他可以自己自定义好多非标准的返回码,只要客户端和服务端都认识就行。


当然,国内经常见到的这种图。。

这个吧,是你搜的东西不够科学~



“ 404 万岁 ”

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存