1 puntos por GN⁺ 2024-10-30 | 1 comentarios | Compartir por WhatsApp
  • HTTP 418 I'm a teapot es 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 Unavailable en 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 teapot significa 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

1 comentarios

 
GN⁺ 2024-10-30
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/

    • Cuando veo el tema de 418, me acuerdo de una discusión en un trabajo anterior sobre si poner emojis en la aplicación
      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

  • El RFC original enlazado también es una buena lectura: https://www.rfc-editor.org/rfc/rfc2324

    • Me gustan estos documentos RFC. Ahora estoy trabajando con documentos de CCSDS y, comparados con los RFC, son un desastre total
      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

    • Había muchísimos chistes de ese tipo, y también estaba “the game”, del que todos quedamos liberados gracias a xkcd
  • 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

    • Si un parser no puede manejar un código de error que está dentro de la especificación, entonces es un problema del parser
    • Hay una anécdota aleccionadora, cuya veracidad es algo incierta, que hace pensar qué más podría estar omitiendo una implementación HTTP si se le pasa el 418
      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

    • Dejando de lado el humor, me pregunto por qué eligieron justamente 418. A veces se siente como si faltaran errores en los códigos HTTP, así que los desarrolladores terminan creando los suyos o reutilizando códigos como 418 que parecen tener bajo riesgo de colisión
      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
    • Qué extraño que haya salido de una Serious Enterprise™ Solution® así
  • 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/

    • iiNet probablemente fue el mejor lugar donde trabajé, donde más aprendí y donde más me divertí
      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