- HTTP 418
I'm a teapotest 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 Unavailableplutô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 teapotsignifie 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
- RFC 2324 section 2.3.2: définition d’origine du code d’état 418
- HTTP Semantics name-418-unused: statut réservé de 418
- HTTP response status codes: liste des codes de réponse HTTP
- Wikipedia: Hyper Text Coffee Pot Control Protocol: référence sur le Hyper Text Coffee Pot Control Protocol
1 commentaires
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/
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
Je me demande comment faire pour bloquer définitivement une adresse simplement parce qu’elle a demandé ce genre d’URL
Le RFC original lié est aussi agréable à lire : https://www.rfc-editor.org/rfc/rfc2324
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
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
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
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
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/
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