418 "Ben bir çaydanlığım" gerçekten bir HTTP yanıt kodu mu?


Yanıtlar:


109

Bu kodu kullanıyorum. İki ayrı HTTP sunucusuna nginx ters proxy isteklerim var. Biri kimliği doğrulanmamış kullanıcılar için istekleri ele alırken, ikincisi kimliği doğrulanmış kullanıcılar için istekleri ele alır. Bu özel durumda sorun, kullanıcının kimliğinin doğrulanıp doğrulanmadığını belirleyen ilk sunucudur. Lütfen neden diye sorma.

Bu nedenle, ilk sunucu kullanıcının kimliğinin doğrulandığını belirlerse yanıt verir 418 I'm a teapot. NGINX daha sonra trafiği dahili olarak ikinci sunucuya yeniden yönlendirir. Tarayıcı söz konusu olduğunda, bu tek bir istekti.

Bu, HTCPCP kodu 418'in ruhuna uygundur , çünkü bir çaydanlık ile BREW yapmaya çalışırsanız, uygun yanıt "Ben bu isteği karşılayacak türden bir şey değilim, ancak başkaları da olabilir." .. Başka bir deyişle, "Ben bir çaydanlığım. Bir kahve makinesi bulun." (ikinci sunucu kahve makinesidir).

Nihayetinde 418, RFC 7231'de açıkça tanımlanmasa da, yine de şemsiyesi altında yer alır 4xx (Client Error).

6. Yanıt Durum Kodları

  • 4xx (İstemci Hatası): İstek hatalı sözdizimi içeriyor veya yerine getirilemiyor

6.5. İstemci Hatası 4xx

  • Durum kodunun 4xx (İstemci Hatası) sınıfı, istemcinin hata yaptığını gösterir. Bir HEAD isteğine yanıt verme durumu dışında, sunucu, hata durumunun açıklamasını ve bunun geçici mi yoksa kalıcı bir durum mu olduğunu içeren bir sunum göndermelidir. Bu durum kodları herhangi bir istek yöntemi için geçerlidir. Kullanıcı aracıları, dahil edilen her türlü temsili kullanıcıya göstermelidir.

2
Accept başlığını kaçırırsanız 418 ile cevap verecek bir 3. taraf sağlayıcım var (gerçekten kötü bir). Hep kötü oldukları için olduğunu düşünmüşümdür ama bu aslında ne olduğunu açıklıyor. Yine de bu durum kodunu sunucularından sızdırdıkları için onları affetmiyor
Hoffmann

7
@Hoffmann 400 Kötü İstek veya 415 Desteklenmeyen Ortam Türü ile yanıt vermeleri uygun olabilirdi, herhangi bir 4xx kodu bir istemci hatasını temsil eder, bu nedenle bu şekilde yorumlanabilir.
wizulus

1
Bu durum kodu httpPython 3.9'daki standart kitaplık modülüne eklenir .
BramAppel

57

HTTP yanıt kodu 418, orijinal olarak RFC 2324 ("Hiper Metin Cezve Kontrol Protokolü (HTCPCP / 1.0)") ve RFC 7168 ("Çay Akıtma Aletleri (HTCPCP-TEA) için Hiper Metin Cezve Kontrol Protokolü") protokollerinde tanımlanmıştır.

Wikipedia Başına: HTTP durum kodlarının listesi: # 418

Bu kod 1998'de geleneksel IETF April Fools şakalarından biri olarak RFC 2324 , Hyper Text Coffee Pot Control Protocol'te tanımlandı ve gerçek HTTP sunucuları tarafından uygulanması beklenmiyor . RFC, bu kodun kahve demlemek için istenen çaydanlıklar tarafından döndürülmesi gerektiğini belirtir. Bu HTTP durumu, Google.com dahil olmak üzere bazı web sitelerinde Paskalya yumurtası olarak kullanılmaktadır .


8
Bunun gerçek bir durum kodu olmadığını gerçekten açıklığa kavuşturmaya değer. Resmi liste burada: iana.org/assignments/http-status-codes/…
Evert

@Evert Bir RFC'deki bir şeyin "resmi" hale gelip gelmediğini ne etkiler? Yorumunuzu bir cevap haline getirebilir misiniz, böylece onu kabul edebileyim?
Mohan

@Mohan IETF ve standardizasyon sürecini küçük bir yoruma yazmaya çalışmak konusunda kendimi iyi hissetmiyorum çünkü muhtemelen bazı kısımları yanlış anlayacağım. Nihayetinde bunun ilgili IETF çalışma gruplarında olduğuna inanıyorum.
Evert

12

görüntü açıklamasını buraya girin

Evet, HTTP 418'in gerçek bir üretim sunucusundan geri geldiğini gördüğümü doğrulayabilirim. Var.


5
WebException sınıfı, istekte döndürülen yanıt kodunu ve durum metnini görüntüler. Yanıt başlığının ilk satırı "432 Bir Sıfır" ise, mesaj "Uzak sunucu bir hata döndürdü: (432) Bir Sıfır" olacaktır. Bu hata oluştuğunda hangi sunucuyu aradığınızı ve hangi yazılımı çalıştırdığını bilmek daha yararlı olabilir.
wizulus

4

Evet, aslında İnternet Mühendisliği Görev Gücü tarafından resmi bir RFC olarak yayınlandığı için "gerçek" bir koddur, ancak bu RFC 1 Nisan'da yayınlandı ve 1 Nisan şakası anlamına geliyordu (Hyper Text Coffee Pot Control'ün geri kalanıyla birlikte) Protokol), meşru uygulama için değil. Bu yüzden çoğu site onu bir Paskalya yumurtası olarak kullanıyor, ancak aksi halde kaçının. Bu yorumda belirtildiği gibi , genellikle 400 (Kötü İstek) gibi daha uygun durumlar vardır.

Özellikle, Larry Masinter'e (Wikipedia'nın iddia ettiği bu RFC'nin yazarı) göre, söz konusu HTTP uzantısı aslında (hicivsel) bir amaca hizmet ediyor: "HTTP'nin uygunsuz bir şekilde genişletildiği birçok yolu tanımlar."


1

Sanırım 418'i bir zamanlar yarı resmi anlamı olan ama şimdi resmi olarak "atanmamış" ayrılmış bir kod olarak ele almanın daha güvenli olduğunu düşünüyorum.

Sanırım, tarihsel olarak bu kodlar hakkında şu anda olduğundan daha farklı bir şey düşünülmüş. Bu bugün anlamsız ve komik geliyor; muhtemelen değil miydi?

Başka bir deyişle, bu kodu kullanmaktan kaçınırdım.


"Muhtemelen değildi" hayır, aslında bu sadece 1 Nisan şakası. RFC'nin çıktığı Nisan ayının hangi gününe dikkat etmeyenler, bunun ciddi bir şey olduğunu düşünebilirdi!
Twisted Code
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.