1 points par GN⁺ 2024-10-30 | 1 commentaires | Partager sur WhatsApp
  • HTTP 418 I'm a teapot est un code de réponse d’état indiquant que le serveur refuse définitivement de préparer du café parce qu’il est une théière
  • Si une cafetière/théière combinée ne peut temporairement pas servir de café, elle doit renvoyer 503 Service Unavailable plutôt que 418
  • Ce code est issu d’une blague du poisson d’avril, Hyper Text Coffee Pot Control Protocol, liée aux protocoles définis en 1998 et 2014
  • À l’origine, c’était un code humoristique de la RFC 2324, mais comme il a été largement diffusé, il a été officiellement réservé dans la RFC 9110
  • Certains sites web utilisent 418 pour des requêtes qu’ils ne veulent pas traiter, par exemple comme des requêtes automatisées, et il ne peut pas recevoir de signification non humoristique dans un avenir proche

Ce que signifie HTTP 418

  • Le code de réponse d’état 418 I'm a teapot signifie que le serveur refuse de préparer du café
  • La raison du refus est que le serveur est définitivement une théière
  • Si une cafetière/théière combinée ne peut temporairement pas servir de café, elle doit renvoyer 503

Un code issu d’un protocole du poisson d’avril

  • Ce code d’état fait référence au Hyper Text Coffee Pot Control Protocol
  • Ce protocole a été défini comme une blague du poisson d’avril en 1998 et 2014
  • 418 a d’abord été défini comme un code humoristique dans la RFC 2324

Pourquoi il est réservé dans la RFC 9110

  • Le code d’état 418 ayant été largement diffusé comme une blague, il a été officiellement réservé dans la RFC 9110
  • À cause de cette réservation, il n’est pas possible d’attribuer à 418 une signification non humoristique dans un avenir proche

Utilisation en pratique

  • Certains sites web utilisent une réponse 418 pour des requêtes qu’ils ne souhaitent pas traiter
  • Les requêtes automatisées en sont un exemple représentatif

Spécifications et références associées

1 commentaires

 
GN⁺ 2024-10-30
Commentaires Hacker News
  • Si vous vous ennuyez, la discussion autour du moment où mnot a essayé de supprimer le code d’état 418 de plusieurs langages et implémentations au motif qu’il n’était pas techniquement correct vaut le détour
    https://github.com/nodejs/node/issues/14644
    https://github.com/golang/go/issues/21326
    Au final, quelqu’un a même créé un site appelé http://save418.com/

    • Quand je vois parler de 418, ça me rappelle une dispute dans un ancien boulot sur l’opportunité de mettre des emoji dans l’application
      L’idée était par exemple d’ajouter un emoji fusée quand une tâche réussissait, et j’étais contre. Dès qu’on commence à en mettre, chacun développe ses préférences, les discussions s’enchaînent pour savoir où en ajouter et où en retirer, et le sujet ressort même quand on parle de choses totalement différentes
      Surtout si l’on ne suit pas le comportement des utilisateurs pour mesurer une éventuelle amélioration réelle des métriques, je considère que l’augmentation du coût de communication est une grosse perte. Ce n’est pas une question de professionnalisme, mais de subjectivité : certains aiment, d’autres détestent, d’autres ne remarquent même pas, et cela crée souvent de petites frictions
  • Je réponds par 418 aux requêtes de bots illégitimes. C’est amusant et ça facilite le filtrage des logs
    Exemple de configuration Nginx

    Nothing to hack around here, I’m just a teapot:

    location ~* .(?:php|aspx?|jsp|dll|sql|bak)$ {
    return 418;
    }
    error_page 418 /418.html;
    Exemple : https://FreeSolitaire.win/wp-login.php
    À noter que /wp-login.php est l’URL de connexion de WordPress, que des bots cherchant des installations WordPress vulnérables demandent souvent à l’aveugle

  • Le RFC original lié est aussi agréable à lire : https://www.rfc-editor.org/rfc/rfc2324

    • J’aime bien ces documents RFC. En ce moment je travaille avec des documents CCSDS, et comparés aux RFC, c’est un bazar complet
      Quand on lit des documents sur le fonctionnement de TCP ou TLS, on a l’impression qu’ils ont été écrits par des experts ayant de l’expérience et une vision. Les documents CCSDS, eux, donnent l’impression d’avoir été écrits par des bureaucrates qui n’ont jamais écrit une ligne de code de leur vie
  • C’était une blague de nerd absurde d’avant l’explosion du mème “sir, this is a wendy's” sur Facebook dans les années 2010

    • Il y avait énormément de blagues de ce genre, et aussi “the game”, dont tout le monde a été libéré grâce à xkcd
  • Je repense toujours à un passage génial que j’avais découvert en lisant le RFC HTTP/2, je ne sais plus pour quelle raison
    Avant la standardisation de “429 Too Many Requests”, l’API Twitter renvoyait, en cas de limitation du débit de requêtes, le code d’état non standard 420 avec le message “Enhance Your Calm”. Ils ont arrêté pour des raisons compréhensibles, mais cette phrase s’est glissée en douce dans HTTP/2
    https://datatracker.ietf.org/doc/html/rfc7540#section-7
    Si l’on regarde l’entrée 0xb, le libellé de fermeture de connexion pour cause de charge excessive est réellement ENHANCE_YOUR_CALM. Ça me fait rire à chaque fois

  • Chaque fois que je rencontre ce code d’erreur dans un vrai service, c’est très frustrant
    Quelqu’un essaie d’avoir l’air spirituel en renvoyant ça au lieu d’un code d’état correct comme 429 ou 503, et cela casse beaucoup de parseurs de codes d’état HTTP
    Ce n’est ni spirituel ni drôle ; en fait, c’est lassant. Je sais que je ne suis pas drôle, mais j’ai du travail à faire

    • Si un parseur n’arrive pas à gérer un code d’erreur présent dans la spécification, c’est un problème de parseur
    • Il existe une anecdote édifiante, à la véracité un peu incertaine, qui fait se demander ce qu’une implémentation HTTP qui oublie 418 a pu oublier d’autre
      On raconte que Van Halen avait inscrit dans ses contrats de concert qu’il fallait placer des M&M’s en backstage, mais en retirant tous les marron
      Dans son autobiographie ‘Crazy From the Heat’, le chanteur David Lee Roth expliquait qu’il ne s’agissait pas d’une exigence puérile, mais d’un test intelligent permettant de juger immédiatement si la salle était sûre
      Si la salle servait des M&M’s marron, cela signifiait qu’elle n’avait pas lu le contrat correctement, et qu’elle pouvait aussi avoir commis des erreurs sur des points bien plus dangereux comme l’alimentation électrique ou la charge supportée par la scène
      https://www.metaltalk.net/chris-dale-myth-busting-the-van-ha...
  • Il y a quelque temps, Sonatype Nexus avait renvoyé 418 pendant l’upload d’un artefact, et ça ne m’avait pas impressionné du tout

    • Si l’on met l’humour de côté, je me demande pourquoi ils ont choisi précisément 418. On a parfois l’impression qu’il manque des erreurs dans les codes HTTP, ce qui pousse les développeurs à en inventer eux-mêmes ou à réutiliser des codes comme 418 qui semblent présenter peu de risques de collision
      Les mauvais usages des codes d’état HTTP m’étonnent à chaque fois. Mon exemple préféré est celui d’un service chez un client qui renvoyait “200 OK”, puis mettait simplement “500” sous forme de texte dans le corps de la réponse
      Quand nous avons demandé qu’en cas d’erreur API il renvoie une erreur 500 au lieu de 200, ils ont juste changé le 200 dans la réponse, pas dans les en-têtes. “200 Created” est aussi un exemple assez fort de mauvaise compréhension de la part d’un développeur ou de contraintes bizarres imposées par un framework
    • C’est étrange de voir ça venir d’une Serious Enterprise™ Solution® de ce genre
  • Nous utilisons le code de réponse 418 dans un service d’authentification
    Il nous sert à distinguer si un token est invalide parce qu’il a expiré, ou pour une autre raison. Si c’est 418, on considère qu’il suffit de renouveler automatiquement le token d’accès. C’est plutôt inoffensif, et ce n’est absolument pas une mesure de sécurité

  • Discussions connexes
    2020, 153 points · 118 commentaires : https://news.ycombinator.com/item?id=24206899
    2021, 193 points · 108 commentaires : https://news.ycombinator.com/item?id=28541327
    2023, 206 points · 189 commentaires : https://news.ycombinator.com/item?id=36090344

  • Dans ce genre de thread, quelqu’un finit généralement par mettre un lien vers la iiNet coffee cam. La voici
    https://coffeecam.iinet.net.au/coffee/history/

    • iiNet a probablement été le meilleur endroit où j’aie travaillé, celui où j’ai le plus appris et où je me suis le plus amusé
      La coffeecam était aussi mignonne, et acb, qui s’en occupait principalement, vendait aussi des bonbons américains à proximité. En tout cas, c’était le cas quand je travaillais à Hay Street