404 = 找不到,418 = 我是茶壶?
小麦2024年07月12日1149 字
本期介绍 HTTP 协议中的 404 和 418 返回码。
你可能早就知道 404 代表找不到、不存在,或是被河蟹(误)。
但是,你知道 418 代表什么吗?查询 RFC 文档 2324,它是一种被称为 I’m a teapot 的 HTTP 返回码,翻译过来就是:我是一只…茶壶。没错,一只茶壶。
文档里是这样解释的,任何尝试用茶壶煮咖啡的行为都应该表示为错误代码 “418 I’m a teapot”。
Emm…逻辑上没错,毕竟茶壶不是用来煮咖啡的。但是为什么在一个严肃的技术文档中,会出现这样带有玩笑性质的内容呢?
其实,如果翻看完整文档,你会惊奇地发现除此之外,文档中还充满了各种各样的幽默段子。比如:
这篇文档出自 1998 年的愚人节,标题是《超文本咖啡壶控制协议 HTCPCP/1.0》,这个协议是用来控制、监控和诊断咖啡壶的。
所以说这是一个写得很正经的愚人节玩笑,让我们接着往下看。
理由里写到,越来越多的家用设备开始接入互联网,消费者希望远程控制咖啡壶等设备,以便他们醒来时可以喝到新鲜的煮好的咖啡。
这似乎和现在的物联网要做的事挺像,不过物联网这个概念是在文档发布的第二年,也就是 1999 年才提出的。如果那时有建设物联网的基础设施,说不定这个玩笑协议还真有可能落地成真。
接着,咖啡壶控制协议基于 HTTP 协议,增加了新的请求方法,头字段和返回码,这里的返回码就包含开头提到的 418。
在头字段中,新增了 Accept-Additions 字段,描述咖啡中可以添加什么料,比如牛奶、糖浆、酒精,并且规定了每种料的具体口味,比如糖浆是要香草味的,还是杏仁味的,酒精要加威士忌还是朗姆酒等等。不得不说还挺精致。
然后是 418 返回码的说明,协议还对原本在 HTTP 协议中的 406 返回码进行了补充。
接着,协议还规定了专用的 “咖啡” 资源链接的写法,还照顾到了各种语言,比如,假设英文是:coffee://my-coffee.com ,中文就是:咖啡://my-coffee.com。
在安全考虑这块,作者开玩笑说任何妨碍自己早晨喝咖啡的都是不安全的。同时,不受限制地访问不受保护的咖啡壶可能导致“拒绝服务攻击”,也就是我们常说的 DDOS 攻击。然后,将咖啡渣倒入互联网管道可能会导致堵塞。
最后的致谢部分,作者提到自己的灵感来自可乐机、咖啡壶、烤面包机和其他由计算机远程控制的设备。
这个协议设想的工作流程是这样的:客户说我要点一杯咖啡,当咖啡机正常工作时,服务器返回调配完成。而当咖啡服务无法完成调配需求时,会返回 418,就是我无法为你调配咖啡。
但实际上,很少有人真的会去按照协议实现这样一个咖啡服务器,这更多是工程师自娱自乐的产物。
418 I’m a teapot 返回码现在更多被 “滥用” 于嘲讽爬虫程序。伪装不足的爬虫程序被服务器检测出来,然后告知爬虫我是一只茶壶,带有满满的嘲讽感。
除了 404 和 418 外,还有许多其他返回码,大致可以分为这五类,4 开头比如 404 表示客户端错误,5 开头比如 500 表示服务端错误,3 开头是重定向,2 开头比如 200 表示成功,1 开头表示信息响应。
这些返回码各有各的含义和用处,它们是现代网络基础设施的关键组成部分,你的电脑和手机时时刻刻都在和它们打交道。404 是令人沮丧的,418 是幽默风趣的,理解了它们也就能更好地理解我们的网络世界。
评论