首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

不瞒你说,生为程序猿,我看到404就害怕!

404也许是你家和学生宿舍的门牌号,手机和车牌号的尾数,404也是中国没有标识的西北小城,但对于程序猿来说,404是一种看到就害怕的存在,本文经差评君授权转载,原标题《记得被404支配的恐惧么?》

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 万岁 ”

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180117A0HM2X00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券