RFC 2324 · RFC 7168
418I'm a Teapot
一个起源于愚人节玩笑、最终被 IANA 收录、并在开发者文化中存活至今的 HTTP 状态码。
时间线
RFC 2324 发布
Larry Masinter 在愚人节写下 HTCPCP/1.0,418 首次出现。
RFC 7168 扩展
HTCPCP-TEA 发布,418 被用来表示“这是一个茶壶”的永久状态。
开发者彩蛋
Google 等网站把它做成复活节彩蛋,大量 HTTP 库也在状态码表里保留了它。
RFC 2324:玩笑的起点
《Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)》发布于 1998 年 4 月 1 日,作者 Larry Masinter。它是一份完全严肃格式的 RFC,但内容是一个用来控制咖啡壶的协议——以及一个专门用来拒绝“用茶壶煮咖啡”的状态码。
HTCPCP/1.0
超文本咖啡壶控制协议
1998 年 4 月 1 日发布。它不是 HTTP 的一部分,而是一个为了控制、监测和诊断咖啡壶而“发明”的恶搞协议。协议里认真定义了 BREW 方法、coffee: URI scheme、以及 Accept-Additions 请求头。
418 的原始定义
Any attempt to brew coffee with a teapot
任何试图用茶壶煮咖啡的行为,都应该返回 418 I'm a Teapot。响应实体“may be short and stout”——这是对童谣《I'm a Little Teapot》的致敬。
愚人节的本质
April Fools' RFC
RFC 2324 是 IETF 传统的愚人节 RFC 之一,发布时并不期望被任何真实的 HTTP 服务器实现。它纯粹是一个玩笑,但玩笑有时候会成真。
RFC 7168:16 年后的续篇
2014 年 4 月 1 日,HTCPCP 迎来了扩展版本《The Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances (HTCPCP-TEA)》。这次的主角从咖啡变成了茶。
HTCPCP-TEA
茶壶控制协议扩展
2014 年 4 月 1 日发布,时隔 16 年。它扩展了 HTCPCP,专门支持泡茶(Tea Efflux Appliances)。
418 的再次确认
A more permanent indication
对于能够泡茶但未配置煮咖啡的茶壶,可以返回 503 Service Unavailable;但如果要表达“它就是一个茶壶”这个永久事实,则使用 418。这让 418 在标准文本里获得了第二次生命。
从玩笑到注册
IANA Registry
尽管源于愚人节,418 最终被 IANA 的 HTTP 状态码注册表收录。它没有取代任何标准 4xx 码,而是作为一个被广泛认可的彩蛋存在。
一个玩笑,为什么留了下来?
418 并不是 HTTP 标准的一部分,RFC 2324 和 RFC 7168 也都明确标注为 Informational,不定义任何互联网标准。但它被 IANA 注册,被大量 HTTP 客户端库保留,被 Google 等网站做成彩蛋,最终成为了开发者之间的一种“共同语言”。
它的生命力恰恰来自它的不严肃。在一个充满 400、403、404、500 的世界里,418 是一个不会误伤任何人的、刻意保留的幽默位。当你看到它,通常意味着某个开发者想让你会心一笑。