- HTTP 418
I'm a teapotes un código de respuesta de estado que rechaza la solicitud porque el servidor es permanentemente una tetera y no puede preparar café - Si se trata de una tetera mixta de café/té que temporalmente no puede servir café, debería devolver
503 Service Unavailableen lugar de 418 - Este código proviene de una broma del Día de los Inocentes de Hyper Text Coffee Pot Control Protocol, y está vinculado con protocolos definidos en 1998 y 2014
- Originalmente era un código de broma de RFC 2324, pero como se distribuyó ampliamente, quedó oficialmente reservado en RFC 9110
- Algunos sitios web usan 418 para solicitudes que no quieren tratar como consultas automatizadas, y en el futuro cercano no se le puede dar un significado no humorístico
Qué indica HTTP 418
- El código de respuesta de estado
418 I'm a teapotsignifica que el servidor se niega a preparar café - La razón del rechazo es que el servidor es permanentemente una tetera
- Si una tetera mixta de café/té temporalmente no puede servir café, debería devolver
503
Un código nacido de un protocolo del Día de los Inocentes
- Este código de estado hace referencia a Hyper Text Coffee Pot Control Protocol
- Ese protocolo fue definido como una broma del Día de los Inocentes en 1998 y 2014
- 418 fue originalmente un código definido como broma del Día de los Inocentes en RFC 2324
Por qué quedó reservado en RFC 9110
- El código de estado 418 quedó oficialmente reservado en RFC 9110 porque el chiste se difundió ampliamente
- Debido a esa reserva, no se le puede asignar un significado no humorístico a 418 en el futuro cercano
Cómo se usa en la práctica
- Algunos sitios web usan una respuesta 418 para solicitudes que no quieren procesar
- Un ejemplo representativo son las solicitudes como consultas automatizadas
Especificaciones relacionadas y material de referencia
- RFC 2324 section 2.3.2: definición original del código de estado 418
- HTTP Semantics name-418-unused: estado de reserva de 418
- HTTP response status codes: lista de códigos de estado de respuesta HTTP
- Wikipedia: Hyper Text Coffee Pot Control Protocol: material de referencia sobre Hyper Text Coffee Pot Control Protocol
1 comentarios
Opiniones de Hacker News
Si están aburridos, vale la pena leer la discusión de cuando mnot intentó eliminar el código de estado 418 de varios lenguajes e implementaciones porque no era técnicamente correcto
https://github.com/nodejs/node/issues/14644
https://github.com/golang/go/issues/21326
Al final, alguien incluso creó un sitio llamado http://save418.com/
La idea era poner un emoji de cohete cuando una tarea terminara con éxito, y yo me opuse. Si empiezas a meter ese tipo de cosas, cada persona desarrolla sus preferencias, empiezan las discusiones sobre dónde poner más y dónde quitarlos, y el tema termina apareciendo incluso cuando se está hablando de algo totalmente distinto
Sobre todo si no se mide con seguimiento de comportamiento de usuarios si realmente mejora las métricas, creo que el aumento en el costo de comunicación es una pérdida importante. No es un tema de profesionalismo; la subjetividad de que a alguien le guste, a alguien no y alguien ni lo note generaba pequeñas fricciones con frecuencia
Yo respondo con 418 a solicitudes de bots que no son legítimas. Es divertido y además facilita filtrar logs
Un ejemplo de configuración de Nginx sería este
Nothing to hack around here, I’m just a teapot:
location ~* .(?:php|aspx?|jsp|dll|sql|bak)$ {
return 418;
}
error_page 418 /418.html;
Ejemplo: https://FreeSolitaire.win/wp-login.php
Como referencia, /wp-login.php es la URL de inicio de sesión de WordPress, y los bots que buscan instalaciones vulnerables de WordPress suelen solicitarla a ciegas
Me pregunto cómo habría que hacer para bloquear permanentemente esa dirección solo por haber solicitado una URL de este tipo
El RFC original enlazado también es una buena lectura: https://www.rfc-editor.org/rfc/rfc2324
Cuando lees la documentación de cómo funcionan TCP o TLS, se siente que la escribió un experto con experiencia y visión; los documentos de CCSDS parecen escritos por burócratas que jamás escribieron una sola línea de código en su vida
Esto era un chiste nerd fuera de contexto de antes de que “sir, this is a wendy's” se volviera un gran meme de Facebook en la década de 2010
Siempre me acuerdo de una parte genial que encontré hace años mientras leía el RFC de HTTP/2 por alguna razón
Antes de que “429 Too Many Requests” se estandarizara, la API de Twitter devolvía un código de estado no estándar 420 y el texto “Enhance Your Calm” cuando se limitaba la tasa de solicitudes. Dejaron de hacerlo por razones comprensibles, pero esa frase sí se coló en HTTP/2
https://datatracker.ietf.org/doc/html/rfc7540#section-7
Si miran el ítem 0xb, el texto de cierre de conexión por carga excesiva efectivamente es ENHANCE_YOUR_CALM. Me hace reír cada vez que lo veo
Cada vez que me he encontrado este código de error en un servicio real, ha sido muy frustrante
Alguien lo devuelve para hacerse el ingenioso, en vez de usar un código de estado correcto como 429 o 503, y por eso se rompen muchos parsers de códigos de estado HTTP
No es ingenioso ni gracioso; de hecho, es aburrido. Sé que soy una persona poco divertida, pero tengo trabajo que hacer
Se dice que Van Halen incluía en su contrato de conciertos que hubiera M&M en el backstage, pero con todos los de color café retirados
En su autobiografía ‘Crazy From the Heat’, el vocalista David Lee Roth explicó que no era una exigencia infantil, sino una prueba inteligente para evaluar rápidamente si el recinto era seguro
Si el recinto ponía M&M cafés, significaba que no había leído bien el contrato, y por lo tanto también podía haberse equivocado en aspectos más peligrosos como el suministro eléctrico o la carga del escenario
https://www.metaltalk.net/chris-dale-myth-busting-the-van-ha...
Hace tiempo Sonatype Nexus devolvió 418 durante la carga de un artefacto, y no me pareció nada impresionante
El uso incorrecto de códigos de estado HTTP me sorprende cada vez que lo veo. Mi caso favorito fue un servicio de un cliente que devolvía “200 OK” y luego ponía solo “500” como texto en el cuerpo de la respuesta
Cuando pedimos que devolviera un error 500 en vez de 200 si había un error de API, cambiaron únicamente el 200 dentro de la respuesta, no el encabezado. “200 Created” también es un ejemplo bastante potente de falta de comprensión del desarrollador o de alguna restricción rara del framework
Usamos el código de respuesta 418 en un servicio de autenticación
Lo usamos para distinguir si un token no es válido porque expiró o por alguna otra razón. Si es 418, asumimos que se puede renovar automáticamente el token de acceso. Es bastante inofensivo y no es una medida de seguridad en absoluto
Discusiones relacionadas
2020, 153 puntos · 118 comentarios: https://news.ycombinator.com/item?id=24206899
2021, 193 puntos · 108 comentarios: https://news.ycombinator.com/item?id=28541327
2023, 206 puntos · 189 comentarios: https://news.ycombinator.com/item?id=36090344
En estos hilos normalmente alguien enlaza la iiNet coffee cam. Aquí está
https://coffeecam.iinet.net.au/coffee/history/
La coffeecam también era adorable, y acb, que era quien se encargaba principalmente de la coffeecam, también vendía dulces estadounidenses cerca de ahí. Al menos así era cuando yo trabajaba en Hay Street