首页/网络/协议速查/418 I'm a teapot 我是个茶壶
HTTP 方法与状态码91 条

418 I'm a teapot 我是个茶壶

1998 年愚人节 RFC 2324(HTCPCP 超文本咖啡壶控制协议)定义的玩笑状态码:用茶壶煮咖啡时返回它。

协议速查网络更新于 2026-10-13

418 的来历

418 I'm a teapot 出自 1998 年的愚人节 RFC 2324:它定义了一个超文本咖啡壶控制协议(HTCPCP),规定用茶壶煮咖啡时要回 418。后续 RFC 7168 还扩展了这套玩笑规范。它从未进入正式 HTTP 语义,IANA 注册表把它标注为 Unused,但大量框架与站点仍然把它实现成彩蛋,所以抓包时真会遇到这个码。

基本信息

名称418 I'm a teapot
出处RFC 2324 §2.3.2,扩展见 RFC 7168
注册状态IANA HTTP 状态码注册表标注为 Unused
实现情况Node.js、Go 等框架可返回,Google 等站点保留彩蛋端点
分类属于 4xx 客户端错误段的玩笑码

典型使用场景

  • 接口文档里的彩蛋:某些开放平台拿它测试客户端能否处理未知 4xx
  • 识别爬虫与自动化流量:部分站点对可疑请求回 418 而非 403,减少被针对性绕过
  • 前端演示未知状态码兜底逻辑,验证错误映射是否健壮
  • 抓包分析时确认这是实现自定义行为,不必按标准语义解读

相邻的玩笑与特殊码

状态码含义是否标准
418我是个茶壶否,未分配
450被微软封锁(历史遗留)否
451因法律原因不可用是,RFC 7725
599部分代理用作网络连接超时否,非标准

观察与实现

观察与实现
curl -si https://www.google.com/teapot | head -3
# HTTP/1.1 418 I'm a teapot
curl -si https://example.com/healthz | head -1   # 确认业务接口没有误用玩笑码
# Node.js: res.status(418).send('teapot')
别在严肃业务里用 418 表达真实错误:监控平台与客户端 SDK 的状态码映射表通常不认识它,会被归入「未知 4xx」,告警与重试策略都会失准。
按标准,客户端收到无法识别的状态码时应把它当作同类别处理(4xx 归客户端错误);实现良好的库会保留原始数字,便于排查。
链路排查时要在日志里保留原始状态码与响应体:彩蛋码经网关或 SDK 包装后往往只剩一个 4xx 分类,真正的码值被吞掉,定位成本反而升高。

易错点

  • 业务接口用 418 表示「参数错误」或「限流」:监控无法归类,压测与告警口径全部对不上,排查时还要额外查代码
  • 把 418 当成「永久失败」处理:它属于 4xx,但语义完全自定义,重试策略应看具体业务而不是码值
  • 网关或 WAF 拦截了未知状态码导致彩蛋失效:抓包能看到响应被替换为 502,却找不到应用日志
  • 文档里把 418 写成标准状态码:会把不准确的规范知识传播给接入方,评审时应核对 RFC 与 IANA 注册表

数据来源与参考

  • RFC 2324 §2.3.2(HTCPCP)
  • RFC 7168(HTCPCP 扩展)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌