RFC 2324 · RFC 7168

418I'm a Teapot

一个起源于愚人节玩笑、最终被 IANA 收录、并在开发者文化中存活至今的 HTTP 状态码。

时间线

1998

RFC 2324 发布

Larry Masinter 在愚人节写下 HTCPCP/1.0,418 首次出现。

2014

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 是一个不会误伤任何人的、刻意保留的幽默位。当你看到它,通常意味着某个开发者想让你会心一笑。