Czy 418 „I'm a Teapot” to naprawdę kod odpowiedzi HTTP?
Istnieją różne odniesienia do tego w Internecie, w tym na listach kodów odpowiedzi, ale nie mogę dowiedzieć się, czy to dziwny żart.
Czy 418 „I'm a Teapot” to naprawdę kod odpowiedzi HTTP?
Istnieją różne odniesienia do tego w Internecie, w tym na listach kodów odpowiedzi, ale nie mogę dowiedzieć się, czy to dziwny żart.
Odpowiedzi:
Używam tego kodu. Mam żądania zwrotnego proxy nginx do dwóch oddzielnych serwerów HTTP. Jedna obsługuje żądania nieuwierzytelnionych użytkowników, a druga obsługuje żądania uwierzytelnionych użytkowników. Problem w tym konkretnym przypadku polega na tym, że pierwszy serwer jest tym, który określa, czy użytkownik jest uwierzytelniony. Proszę nie pytaj dlaczego.
Jeśli więc pierwszy serwer stwierdzi, że użytkownik jest uwierzytelniony, odpowiada 418 I'm a teapot
. Następnie NGINX przekierowuje ruch wewnętrznie na drugi serwer. Jeśli chodzi o przeglądarkę, było to pojedyncze żądanie.
Jest to zgodne z duchem kodu HTCPCP 418 , ponieważ jeśli spróbujesz ZAPARZYĆ za pomocą czajnika, właściwą odpowiedzią będzie „Nie jestem osobą, która może obsłużyć to żądanie, ale mogą istnieć inne”. .. Innymi słowy, „Jestem czajniczkiem. Znajdź ekspres do kawy”. (drugim serwerem jest ekspres do kawy).
Ostatecznie, chociaż 418 nie jest wyraźnie zdefiniowany w RFC 7231 , nadal jest objęty parasolem 4xx (Client Error)
.
6. Kody stanu odpowiedzi
- 4xx (błąd klienta): Żądanie zawiera złą składnię lub nie może zostać spełnione
6.5. Błąd klienta 4xx
- Klasa 4xx (błąd klienta) kodu stanu wskazuje, że klient prawdopodobnie popełnił błąd. Z wyjątkiem odpowiedzi na żądanie HEAD, serwer POWINIEN wysłać reprezentację zawierającą wyjaśnienie sytuacji błędu oraz czy jest to stan tymczasowy czy trwały. Te kody stanu mają zastosowanie do każdej metody żądania. Programy użytkownika POWINNY wyświetlać użytkownikowi wszelkie dołączone reprezentacje.
http
w Pythonie 3.9.
Kod odpowiedzi HTTP 418 został pierwotnie zdefiniowany w protokołach RFC 2324 („Hyper Text Coffee Pot Control Protocol (HTCPCP / 1.0)”) i RFC 7168 („The Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances (HTCPCP-TEA)”).
Według Wikipedii: Lista kodów stanu HTTP: # 418
Ten kod został zdefiniowany w 1998 roku jako jeden z tradycyjnych żartów IETF April Fools , w RFC 2324 , Hyper Text Coffee Pot Control Protocol i nie oczekuje się, że zostanie wdrożony przez rzeczywiste serwery HTTP . Dokument RFC określa, że ten kod powinien być zwracany przez czajniki żądane do parzenia kawy. Ten stan HTTP jest używany jako jajko wielkanocne w niektórych witrynach, w tym w Google.com .
Tak, to „prawdziwy” kod, ponieważ został opublikowany jako oficjalny dokument RFC przez Internet Engineering Task Force, ale ten dokument RFC został opublikowany 1 kwietnia i miał być żartem na prima aprilis (wraz z resztą Hyper Text Coffee Pot Control Protokół), a nie do legalnej implementacji. Dlatego większość witryn używa go jako pisanki, ale poza tym należy go unikać. Jak zauważono w tym komentarzu , często istnieją bardziej odpowiednie stany, takie jak 400 (złe żądanie). Wszystko to powiedziawszy, dzięki społeczności IT, jest to teraz zarezerwowany kod, więc nie spodziewaj się, że wkrótce pojawi się gdziekolwiek.
Warto zauważyć, że według Larry'ego Masintera (autora tego RFC rzekomego w Wikipedii), to rozszerzenie HTTP faktycznie służy (satyrycznemu) celowi: „identyfikuje wiele sposobów, w jakie HTTP został niewłaściwie rozszerzony”.
Myślę, że bezpieczniej jest traktować 418 jako zastrzeżony kod, który kiedyś miał w połowie oficjalne znaczenie, ale teraz jest oficjalnie „nieprzypisany”.
Zakładam, że historycznie o tych kodach myślano inaczej niż teraz. Dziś brzmi to bezsensownie i zabawnie; prawdopodobnie nie było?
Innymi słowy, unikałbym używania tego kodu.