418 I'm a teapot
使い方
418 I’m a teapot のエラーメッセージは、IETF のエイプリルフールのジョークの1つとして考案されました。その RFC は、コーヒーを淹れるよう求められたティーポットはこのメッセージで応答すると述べています。具体的には、返されるメッセージボディは「short and stout(背が低くてずんぐりしている)」と記述されています。
このステータスコードは本番環境で使われることはありませんが、多くの HTTP ライブラリがこのコードをサポートしています。この番号を公式用途に使えるようにするためステータスコードを削除しようとする動きは反発に遭い、Save 418 運動につながりました。このメッセージとステータスコードは残されています。
ステータスコードの予約
HTTP 仕様は、広く普及した HTCPCP の実装との衝突を避けるため、ステータスコード 418 を「(Unused)」として予約しています。
SEO への影響
Google のような検索エンジンは、418 I’m a teapot のレスポンスステータスを持つ URL をインデックスしません。以前にインデックスされていた URL は検索結果から削除されます。
例
クライアントがコーヒーを淹れるよう要求しますが、ティーポットが異議を唱えます。
リクエスト
BREW coffee HTTP/1.1
Host: example.com
Content-Type: message/coffeepot
Content-Length: 5
start
レスポンス
HTTP/1.1 418 I'm a teapot
Content-Type: text/html
Content-Length: 146
<html>
<head>
<title>Beverage not supported</title>
</head>
<body>
<p>This is a teapot. Coffee is not supported.</p>
</body>
</html>
418 レスポンスを発生させる方法
418 レスポンスは、HTCPCP のジョークプロトコルをサポートするよう設定されたサーバー、またはこのコードを明示的に返すアプリケーションによってのみ返されます。Google はイースターエッグとして google.com/teapot で 418 を返します。多くの Web フレームワークでは、レスポンスのステータスコードを直接設定することで 418 を返せます。意図的な設定なしに 418 を返す標準的な HTTP サーバーはありません。
418 の歴史
このステータスコードは、1998 年に Hyper Text Coffee Pot Control Protocol(HTCPCP)のエイプリルフール向け仕様の一部として生まれました。HTCPCP を紅茶向けに拡張する関連仕様が 2014 年に続きました。2017 年に IETF がこのコードを公式用途として回収することを検討した際、開発者コミュニティが異議を唱え、Save 418 運動を立ち上げました。IETF は最終的に、主要な HTTP 仕様でこのコードを「(Unused)」として予約しました。
コードリファレンス
.NET
StatusCodes.Status418ImATeapot
Rust
http::StatusCode::IM_A_TEAPOT
Go
http.StatusTeapot
Symfony
Response::HTTP_I_AM_A_TEAPOT
Python3.9+
http.HTTPStatus.IM_A_TEAPOT
Angular
@angular/common/http/HttpStatusCode.ImATeapot