418 I'm a teapot
Uso
El mensaje de error 418 I’m a teapot se ideó como una de las bromas del Día de los Inocentes del IETF. El RFC establece que cualquier tetera a la que se le pida preparar café responde con este mensaje. En concreto, el cuerpo del mensaje resultante se describe como bajito y rechoncho.
Aunque este código de estado no se utiliza en producción, muchas bibliotecas HTTP lo admiten. Un intento de eliminarlo para dejar el número libre para un uso oficial se topó con resistencia y dio lugar a la iniciativa Save 418. El mensaje y el código de estado siguen ahí.
Reserva del código de estado
La especificación HTTP reserva el código de estado 418 como “(Unused)” para evitar conflictos con las extendidas implementaciones de HTCPCP.
Impacto en SEO
Los buscadores como Google no indexan una URL con el estado de respuesta 418 I’m a teapot. Las URL indexadas previamente se eliminarán de los resultados de búsqueda.
Ejemplo
El cliente pide que se prepare café, pero la tetera se niega.
Solicitud
BREW coffee HTTP/1.1
Host: example.com
Content-Type: message/coffeepot
Content-Length: 5
start
Respuesta
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>
Cómo provocar una respuesta 418
Solo devuelven una respuesta 418 los servidores configurados para admitir el protocolo humorístico HTCPCP o las aplicaciones que devuelven este código de forma explícita. Google devuelve un 418 en google.com/teapot a modo de huevo de pascua. Muchos frameworks web permiten devolver un 418 estableciendo directamente el código de estado de la respuesta. Ningún servidor HTTP estándar devuelve un 418 sin una configuración deliberada.
Historia del 418
El código de estado nació en 1998 como parte de una especificación del Día de los Inocentes para el Hyper Text Coffee Pot Control Protocol (HTCPCP). En 2014 llegó una especificación complementaria que extendía HTCPCP al té. Cuando en 2017 el IETF se planteó recuperar el código para un uso oficial, la comunidad de desarrolladores se opuso y puso en marcha el movimiento Save 418. Finalmente, el IETF reservó el código como “(Unused)” en la especificación principal de HTTP.
Referencias de código
.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