1 pontos por GN⁺ 2024-10-30 | 1 comentários | Compartilhar no WhatsApp
  • HTTP 418 I'm a teapot é um código de resposta de status que rejeita a solicitação porque o servidor é permanentemente um bule de chá e não pode preparar café
  • Se for um bule combinado de café/chá que temporariamente não consegue servir café, deve retornar 503 Service Unavailable em vez de 418
  • Esse código surgiu como uma piada de 1º de abril no Hyper Text Coffee Pot Control Protocol e está ligado aos protocolos definidos em 1998 e 2014
  • Originalmente era um código de brincadeira da RFC 2324, mas como foi amplamente distribuído, ficou oficialmente reservado na RFC 9110
  • Alguns sites usam 418 para requisições que não querem tratar como consultas automatizadas, e no futuro próximo não será possível atribuir a ele um significado não humorístico

O que o HTTP 418 indica

  • O código de resposta de status 418 I'm a teapot significa que o servidor se recusa a preparar café
  • O motivo da recusa é que o servidor é permanentemente um bule de chá
  • Se um bule combinado de café/chá temporariamente não puder servir café, deve retornar 503

Um código que começou em um protocolo de 1º de abril

  • Esse código de status faz referência ao Hyper Text Coffee Pot Control Protocol
  • Esse protocolo foi definido como uma piada de 1º de abril em 1998 e 2014
  • O 418 foi originalmente definido como um código de 1º de abril na RFC 2324

Por que ele foi reservado na RFC 9110

  • O código de status 418 foi oficialmente reservado na RFC 9110 porque a brincadeira acabou sendo amplamente distribuída
  • Por causa dessa reserva, não será possível atribuir ao 418 um significado não humorístico no futuro próximo

Como ele é usado na prática

  • Alguns sites usam a resposta 418 para requisições que não querem processar
  • Um exemplo representativo são requisições como consultas automatizadas

Especificações relacionadas e materiais de referência

1 comentários

 
GN⁺ 2024-10-30
Comentários no Hacker News
  • Se estiver entediado, vale a pena ler as discussões de quando mnot tentou remover o código de status 418 de várias linguagens e implementações, alegando que ele não era tecnicamente correto
    https://github.com/nodejs/node/issues/14644
    https://github.com/golang/go/issues/21326
    No fim, alguém chegou até a criar um site chamado http://save418.com/

    • Quando vejo falar do 418, lembro de uma discussão em um emprego antigo sobre colocar emojis no aplicativo
      A ideia era colocar um emoji de foguete quando uma tarefa fosse concluída com sucesso, e eu era contra. Quando se começa a colocar esse tipo de coisa, cada pessoa passa a ter suas preferências, surgem discussões constantes sobre colocar mais em alguns lugares e tirar de outros, e o assunto acaba sendo puxado mesmo quando se está discutindo algo totalmente diferente
      Especialmente se você não mede, com rastreamento do comportamento dos usuários, se isso realmente melhora alguma métrica, vejo o aumento do custo de comunicação como um prejuízo grande. Não é uma questão de profissionalismo; é que a subjetividade de algumas pessoas gostarem, outras não gostarem e outras nem perceberem criava pequenos atritos com frequência
  • Eu respondo com 418 a requisições de bots que não são legítimas. É divertido e também facilita filtrar os logs
    Um exemplo de configuração do Nginx seria 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;
    Exemplo: https://FreeSolitaire.win/wp-login.php
    Para referência, /wp-login.php é a URL de login do WordPress, e bots que procuram instalações vulneráveis do WordPress costumam solicitá-la às cegas

  • O RFC original linkado também é uma boa leitura: https://www.rfc-editor.org/rfc/rfc2324

    • Gosto desses documentos RFC. Hoje trabalho com documentos CCSDS, e, comparados aos RFCs, eles são uma bagunça completa
      Quando leio documentos sobre como TCP ou TLS funcionam, sinto que foram escritos por especialistas com experiência e visão. Já os documentos CCSDS parecem ter sido escritos por burocratas que nunca escreveram uma linha de código na vida
  • Isso era uma piada aleatória de nerd anterior à época em que “sir, this is a wendy's” explodiu como meme no Facebook nos anos 2010

    • Havia muitas piadas desse tipo, e também havia “the game”, do qual todo mundo foi libertado graças ao xkcd
  • Sempre me lembro de uma parte ótima que encontrei certa vez, não lembro por qual motivo, lendo o RFC do HTTP/2
    Antes de “429 Too Many Requests” ser padronizado, a API do Twitter retornava, ao limitar a taxa de requisições, o código de status não padrão 420 e a frase “Enhance Your Calm”. Eles pararam por motivos compreensíveis, mas essa frase acabou entrando sorrateiramente no HTTP/2
    https://datatracker.ietf.org/doc/html/rfc7540#section-7
    Se você olhar o item 0xb, a mensagem de encerramento de conexão por carga excessiva é realmente ENHANCE_YOUR_CALM. Eu rio toda vez que vejo

  • Sempre que encontrei esse código de erro em serviços reais, fiquei muito frustrado
    Alguém, tentando parecer espirituoso, retorna isso em vez de um código de status correto como 429 ou 503, e por causa disso muitos parsers de códigos de status HTTP quebram
    Não é espirituoso, nem engraçado; na verdade é cansativo. Eu sei que sou uma pessoa sem graça, mas tenho trabalho a fazer

    • Se o parser não consegue lidar com um código de erro que está dentro da especificação, então isso é problema do parser
    • Há uma anedota instrutiva, embora a veracidade seja um pouco incerta, que faz pensar no que mais uma implementação HTTP que deixa passar o 418 também pode ter deixado passar
      Dizem que o Van Halen colocava em seus contratos de shows que deveria haver M&M nos bastidores, mas que todos os marrons fossem removidos
      O vocalista David Lee Roth explicou em sua autobiografia ‘Crazy From the Heat’ que isso não era uma exigência infantil, e sim um teste inteligente para avaliar rapidamente se a casa de shows era segura
      Se o local colocasse M&M marrons, isso significava que não tinha lido o contrato direito, e portanto poderia também ter cometido erros em partes mais perigosas, como fornecimento elétrico ou carga suportada pelo palco
      https://www.metaltalk.net/chris-dale-myth-busting-the-van-ha...
  • Antigamente, o Sonatype Nexus retornou 418 durante o upload de artefatos, e isso não me impressionou nem um pouco

    • Tirando o humor, fico curioso sobre por que escolheram justamente o 418. Às vezes parece que faltam códigos de erro no HTTP, então os desenvolvedores acabam criando os próprios ou reaproveitando códigos como o 418, que parecem ter baixo risco de conflito
      O uso indevido de códigos de status HTTP me surpreende toda vez que vejo. Meu caso favorito foi um serviço de um cliente que retornava “200 OK” e colocava apenas o texto “500” no corpo da resposta
      Quando pedimos que retornassem erro 500 em vez de 200 quando houvesse erro na API, eles trocaram apenas o 200 dentro da resposta, não o cabeçalho. “200 Created” também é um exemplo bem forte de falta de entendimento do desenvolvedor ou de alguma restrição estranha do framework
    • É curioso isso ter vindo de uma Serious Enterprise™ Solution® dessas
  • Usamos o código de resposta 418 no serviço de autenticação
    Ele serve para distinguir se o token é inválido por expiração ou por outro motivo. Se for 418, entendemos que basta renovar automaticamente o token de acesso. É bem inofensivo, e não é nenhuma medida de segurança

  • Discussões relacionadas
    2020, 153 pontos · 118 comentários: https://news.ycombinator.com/item?id=24206899
    2021, 193 pontos · 108 comentários: https://news.ycombinator.com/item?id=28541327
    2023, 206 pontos · 189 comentários: https://news.ycombinator.com/item?id=36090344

  • Em threads como esta, normalmente alguém linka a iiNet coffee cam. Aqui está
    https://coffeecam.iinet.net.au/coffee/history/

    • A iiNet provavelmente foi a melhor empresa em que já trabalhei, onde mais aprendi e onde mais me diverti
      A coffeecam também era simpática, e o acb, que cuidava principalmente dela, vendia doces americanos ali por perto. Pelo menos era assim quando eu trabalhava na Hay Street