1 puan yazan GN⁺ 2024-10-30 | 1 yorum | WhatsApp'ta paylaş
  • HTTP 418 I'm a teapot, sunucunun kalıcı olarak bir çaydanlık olduğu için kahve demlemeyi reddettiğini belirten bir durum yanıt kodudur
  • Kahve/çay ikilisi bir demlik geçici olarak kahve sağlayamıyorsa 418 yerine 503 Service Unavailable döndürmelidir
  • Bu kod, Hyper Text Coffee Pot Control Protocol içindeki bir 1 Nisan şakasıdır ve 1998 ile 2014'te tanımlanan protokollerle bağlantılıdır
  • Başlangıçta RFC 2324 içindeki bir şaka koduydu, ancak yaygın biçimde dağıtıldığı için RFC 9110 içinde resmen rezerve edilmiştir
  • Bazı web siteleri, otomatik sorgular gibi ele almak istemedikleri isteklere 418 kullanır; yakın gelecekte buna şaka dışı bir anlam verilemez

HTTP 418'in ifade ettiği durum

  • 418 I'm a teapot durum yanıt kodu, sunucunun kahve demlemeyi reddettiği anlamına gelir
  • Reddetme nedeni, sunucunun kalıcı olarak bir çaydanlık olmasıdır
  • Kahve/çay ikilisi bir demlik geçici olarak kahve sağlayamıyorsa 503 döndürmelidir

1 Nisan protokolünden doğan kod

  • Bu durum kodu, Hyper Text Coffee Pot Control Protocol'e atıfta bulunur
  • Söz konusu protokol, 1998 ve 2014 yıllarında 1 Nisan şakası olarak tanımlanmıştır
  • 418, başlangıçta RFC 2324 içinde bir 1 Nisan şakası olarak tanımlanan bir koddur

RFC 9110'da neden rezerve edildi

  • 418 durum kodu, bir şaka olarak yaygın biçimde dağıtıldığı için RFC 9110 içinde resmen rezerve edilmiştir
  • Bu rezervasyon nedeniyle yakın gelecekte 418'e şaka dışı bir anlam atanamaz

Gerçek kullanım biçimi

  • Bazı web siteleri, işlemek istemedikleri isteklere 418 yanıtı kullanır
  • Buna otomatik sorgular gibi istekler örnek verilebilir

İlgili spesifikasyonlar ve başvuru kaynakları

1 yorum

 
GN⁺ 2024-10-30
Hacker News yorumları
  • Canınız sıkılırsa, mnot teknik olarak doğru olmadığı gerekçesiyle çeşitli dillerden ve implementasyonlardan 418 durum kodunu kaldırmaya çalıştığında yapılan tartışmaları okumaya değer
    https://github.com/nodejs/node/issues/14644
    https://github.com/golang/go/issues/21326
    Sonunda biri http://save418.com/ diye bir site bile açmış

    • 418 konusu açılınca, eski iş yerimde uygulamaya emoji koyup koymama üzerine tartıştığımız bir olay aklıma geliyor
      İş başarılı olunca roket emojisi koymak gibi bir şeydi; ben karşıydım. Böyle şeyleri koymaya başlayınca herkesin farklı bir zevki oluyor, nereye daha çok koyalım nereden çıkaralım tartışmaları bitmiyor ve tamamen başka konuları konuşurken bile mesele tekrar gündeme geliyor
      Özellikle kullanıcı davranışını izleyip gerçek metriklerde iyileşme olup olmadığını görmüyorsanız, iletişim maliyetinin artmasını büyük bir kayıp olarak görüyorum. Bu profesyonellik meselesi değil; birilerinin sevdiği, birilerinin sevmediği, birilerinin de fark etmediği türden öznel şeyler sık sık küçük sürtüşmeler yaratıyordu
  • Meşru olmayan bot isteklerine 418 ile yanıt veriyorum. Hem eğlenceli hem de log filtrelemeyi kolaylaştırıyor
    Nginx yapılandırma örneği şöyle

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

    location ~* .(?:php|aspx?|jsp|dll|sql|bak)$ {
    return 418;
    }
    error_page 418 /418.html;
    Örnek: https://FreeSolitaire.win/wp-login.php
    Bu arada /wp-login.php WordPress giriş URL’sidir ve savunmasız WordPress kurulumları arayan botlar bunu sıkça rastgele ister

  • Bağlantısı verilen özgün RFC de okunması keyifli: https://www.rfc-editor.org/rfc/rfc2324

    • Bu tür RFC belgelerini seviyorum. Şu anda CCSDS dokümanlarıyla çalışıyorum; RFC’lerle karşılaştırınca tam bir karmaşa
      TCP’nin ya da TLS’nin nasıl çalıştığını anlatan dokümanları okuyunca, bunları deneyimi ve vizyonu olan uzmanların yazdığı hissine kapılıyorsunuz; CCSDS belgeleri ise hayatında tek satır kod yazmamış bürokratlar tarafından yazılmış gibi görünüyor
  • Bu, 2010’larda “sir, this is a wendy's” Facebook’ta büyük bir meme olmadan önceki nerd tarzı alakasız şakaydı

    • Böyle şakalar çok fazlaydı; xkcd sayesinde herkesin kurtulduğu “the game” de vardı
  • Eskiden hangi nedenle olduğunu hatırlamıyorum, HTTP/2 RFC’sini okurken bulduğum harika bir bölümü hep hatırlarım
    “429 Too Many Requests” standartlaştırılmadan önce Twitter API, istek hız sınırında standart dışı 420 durum kodunu ve “Enhance Your Calm” ifadesini döndürüyordu. Anlaşılır nedenlerle bunu bıraktılar ama o ifade gizlice HTTP/2’ye girdi
    https://datatracker.ietf.org/doc/html/rfc7540#section-7
    0xb maddesine bakarsanız, aşırı yük nedeniyle bağlantıyı sonlandırma ifadesinin gerçekten ENHANCE_YOUR_CALM olduğunu görürsünüz. Her gördüğümde güldürüyor

  • Gerçek servislerde bu hata koduyla her karşılaştığımda çok sinir bozucuydu
    Birileri esprili görünmek için 429 veya 503 gibi doğru durum kodları yerine bunu döndürüyor ve bu yüzden birçok HTTP durum kodu ayrıştırıcısı bozuluyor
    Ne zekice ne de komik; hatta sıkıcı. Eğlencesiz biri olduğumu biliyorum ama yapılacak işler var

    • Ayrıştırıcı, spesifikasyonda yer alan bir hata kodunu işleyemiyorsa bu ayrıştırıcının sorunudur
    • Bir HTTP implementasyonu 418’i kaçırıyorsa başka neleri kaçırmış olabileceğini düşündüren, doğruluğu biraz belirsiz, öğretici bir anekdot var
      Van Halen’ın konser sözleşmesine kuliste M&M bulundurulmasını ama kahverengilerin hepsinin çıkarılmasını yazdığı söylenir
      Vokalist David Lee Roth, ‘Crazy From the Heat’ adlı otobiyografisinde bunun çocukça bir talep değil, mekânın güvenli olup olmadığını hemen anlamak için akıllıca bir test olduğunu açıklamıştı
      Mekân kahverengi M&M koyduysa sözleşmeyi düzgün okumamış demekti; elektrik beslemesi veya sahne yük kapasitesi gibi daha tehlikeli konularda da hata yapmış olabileceği düşünülüyordu
      https://www.metaltalk.net/chris-dale-myth-busting-the-van-ha...
  • Eskiden Sonatype Nexus’un artefakt yükleme sırasında 418 döndürdüğü olmuştu; hiç de etkileyici değildi

    • Mizahı bir kenara bırakırsak neden özellikle 418’i seçtiklerini merak ediyorum. HTTP kodlarında eksik bir hata varmış gibi hissedilen durumlar oluyor; bu yüzden geliştiriciler ya kendileri bir şey uyduruyor ya da çakışma riski düşük görünen 418 gibi kodları yeniden kullanıyor sanki
      HTTP durum kodlarının yanlış kullanımı her gördüğümde beni şaşırtıyor. Sevdiğim örneklerden biri, “200 OK” döndürüp yanıt gövdesine metin olarak yalnızca “500” koyan bir müşterinin servisiydi
      API hatası varsa 200 yerine 500 hatası döndürmelerini istediğimizde, header’ı değil yanıttaki 200’ü değiştirmişlerdi. “200 Created” da geliştiricinin konuyu anlamadığını veya tuhaf framework kısıtlarını gösteren oldukça güçlü bir örnek
    • Böyle bir Serious Enterprise™ Solution® içinden çıkması tuhaf
  • Kimlik doğrulama servisinde 418 yanıt kodunu kullanıyoruz
    Token’ın süresi dolduğu için mi geçersiz olduğunu, yoksa başka bir nedenle mi geçersiz olduğunu ayırt etmek için kullanıyoruz. 418 gelirse erişim token’ını otomatik yenilemek gerektiğine karar veriyoruz. Oldukça zararsız ve kesinlikle bir güvenlik önlemi değil

  • İlgili tartışmalar
    2020, 153 puan · 118 yorum: https://news.ycombinator.com/item?id=24206899
    2021, 193 puan · 108 yorum: https://news.ycombinator.com/item?id=28541327
    2023, 206 puan · 189 yorum: https://news.ycombinator.com/item?id=36090344

  • Böyle thread’lerde genelde biri iiNet coffee cam bağlantısını paylaşır. İşte burada
    https://coffeecam.iinet.net.au/coffee/history/

    • iiNet muhtemelen çalıştığım yerler içinde en iyisiydi; en çok şey öğrendiğim ve en çok eğlendiğim yerdi
      coffeecam de sevimliydi; coffeecam ile çoğunlukla ilgilenen acb, onun yakınlarında Amerikan atıştırmalıkları da satardı. En azından ben Hay Street’te çalışırken öyleydi