Apakah 418 “I'm a teapot” benar-benar merupakan kode respons HTTP?


Jawaban:


120

Saya menggunakan kode ini. Saya memiliki permintaan nginx reverse-proxying ke dua server HTTP terpisah. Satu menangani permintaan untuk pengguna yang tidak diautentikasi, dan yang kedua menangani permintaan untuk pengguna yang diautentikasi. Masalah dalam kasus khusus ini, adalah server pertama yang menentukan apakah pengguna diotentikasi. Tolong jangan tanya kenapa.

Jadi, jika server pertama menentukan pengguna diautentikasi, server akan merespons 418 I'm a teapot. NGINX kemudian merutekan ulang lalu lintas secara internal ke server kedua. Sejauh menyangkut browser, itu adalah permintaan tunggal.

Ini adalah semangat kode HTCPCP 418 , karena jika Anda mencoba BREW dengan teko, tanggapan yang sesuai adalah "Saya bukan jenis orang yang dapat menangani permintaan itu, tetapi mungkin ada yang lain." .. Dengan kata lain, "Saya poci teh. Temukan pembuat kopi." (server kedua adalah pembuat kopi).

Pada akhirnya, sementara 418 tidak secara eksplisit didefinisikan dalam RFC 7231 , itu masih dilindungi oleh payung 4xx (Client Error).

6. Kode Status Respon

  • 4xx (Kesalahan Klien): Permintaan berisi sintaks yang buruk atau tidak dapat dipenuhi

6.5. Kesalahan Klien 4xx

  • Kelas 4xx (Kesalahan Klien) dari kode status menunjukkan bahwa klien tampaknya telah melakukan kesalahan. Kecuali saat menanggapi permintaan HEAD, server HARUS mengirimkan representasi yang berisi penjelasan tentang situasi kesalahan, dan apakah itu kondisi sementara atau permanen. Kode status ini berlaku untuk metode permintaan apa pun. Agen pengguna HARUS menampilkan representasi apa pun yang disertakan kepada pengguna.

2
Saya memiliki penyedia pihak ke-3 (yang sangat buruk) yang akan menjawab dengan 418 jika Anda kehilangan header Terima. Saya selalu berpikir itu karena mereka hanya buruk, tetapi ini sebenarnya menjelaskan apa yang terjadi. Masih tidak memaafkan mereka karena membocorkan kode status itu dari server mereka
Hoffmann

7
@Hoffmann Mungkin sudah tepat bagi mereka untuk menanggapi dengan 400 Permintaan Buruk, atau 415 Jenis Media yang Tidak Didukung, kode 4xx apa pun mewakili kesalahan klien, jadi dapat ditafsirkan seperti itu.
wizulus

1
Kode status ini ditambahkan ke modul perpustakaan standar httpdi Python 3.9.
BramAppel

60

Kode tanggapan HTTP 418 awalnya ditentukan di RFC 2324 ("Hyper Text Coffee Pot Control Protocol (HTCPCP / 1.0)") dan RFC 7168 ("The Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances (HTCPCP-TEA)") protokol.

Per Wikipedia: Daftar kode status HTTP: # 418

Kode ini didefinisikan pada tahun 1998 sebagai salah satu lelucon tradisional IETF April Mop , di RFC 2324 , Hyper Text Coffee Pot Control Protocol , dan tidak diharapkan untuk diterapkan oleh server HTTP yang sebenarnya . RFC menetapkan kode ini harus dikembalikan oleh teko yang diminta untuk menyeduh kopi. Status HTTP ini digunakan sebagai telur Paskah di beberapa situs web, termasuk Google.com .


10
Perlu diperjelas bahwa ini bukan kode status yang sebenarnya. Daftar resminya ada di sini: iana.org/assignments/http-status-codes/…
Evert

@Evert apa yang mempengaruhi apakah sesuatu di RFC menjadi "resmi"? Bisakah Anda membuat komentar Anda menjadi sebuah jawaban sehingga saya bisa menerimanya?
Mohan

@Mohan Saya merasa tidak enak mencoba menulis IETF dan proses standardisasi menjadi komentar kecil karena saya mungkin akan salah. Pada akhirnya saya yakin ini terletak pada kelompok kerja IETF yang relevan.
Evert

Saya menggunakannya sebagai placeholder atau 'rencana' saat saya membuat aplikasi web. Ide yang agak mirip dengan nomor telepon fiksi daricom.org.uk/phones-telecoms-and-internet/… Saya yakin itu tidak akan pernah digunakan secara serius.
Chris Huang-Leaver

14

masukkan deskripsi gambar di sini

Ya, saya dapat mengonfirmasi, bahwa saya telah melihat HTTP 418 kembali dari server produksi yang sebenarnya. Itu memang ada.


5
Kelas WebException akan menampilkan kode respons dan teks status apa pun yang dikembalikan dalam permintaan. Jika baris pertama dari header respons adalah "432 One Zero", pesannya adalah "Server jarak jauh mengembalikan kesalahan: (432) One Zero". Mungkin lebih membantu untuk mengetahui server apa yang Anda panggil ketika kesalahan ini terjadi, dan perangkat lunak apa yang sedang dijalankan.
wizulus

6

Ya, itu adalah kode "nyata" yang sebenarnya diterbitkan sebagai RFC resmi oleh Internet Engineering Task Force, tetapi RFC diterbitkan pada tanggal 1 April dan dimaksudkan sebagai lelucon April bodoh (bersama dengan Hyper Text Coffee Pot Control lainnya Protokol), bukan untuk implementasi yang sah. Itulah mengapa sebagian besar situs menggunakannya sebagai telur Paskah, tetapi sebaliknya menghindarinya. Seperti dicatat oleh komentar ini , seringkali ada status yang lebih sesuai seperti 400 (Permintaan Buruk). Semua yang dikatakan, berkat komunitas TI, sekarang kode itu sudah dipesan, jadi jangan berharap itu akan pergi ke mana pun dalam waktu dekat.

Khususnya, menurut Larry Masinter (penulis RFC yang diklaim oleh Wikipedia), ekstensi HTTP yang dipermasalahkan sebenarnya melayani tujuan (satir): "ia mengidentifikasi banyak cara di mana HTTP telah diperpanjang secara tidak tepat."


1

Saya pikir lebih aman untuk memperlakukan 418 sebagai kode cadangan yang dulu memiliki arti setengah resmi tetapi sekarang secara resmi "tidak digunakan".

Saya berasumsi, secara historis ada sesuatu yang dipikirkan secara berbeda tentang kode-kode ini daripada sekarang. Ini terdengar tidak berarti dan lucu hari ini; mungkin tidak?

Dengan kata lain, saya akan menghindari penggunaan kode ini.


"Mungkin tidak" tidak, sebenarnya itu hanya lelucon April mop. Orang-orang yang tidak memperhatikan hari apa di bulan April ketika RFC keluar mungkin mengira itu adalah hal yang serius!
Twisted Code
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.