418「私はティーポットです」は本当にHTTP応答コードですか?


120

418「私はティーポットです」は本当にHTTP応答コードですか?

応答コードのリストを含め、インターネット上でこれに関するさまざまな参照がありますが、それが奇妙なジョークであるかどうかはわかりません。



回答:


120

私はこのコードを使用します。2つの別々のHTTPサーバーへのnginxリバースプロキシリクエストがあります。1つは認証されていないユーザーの要求を処理し、もう1つは認証されたユーザーの要求を処理します。この特定の場合の問題は、最初のサーバーがユーザーが認証されているかどうかを判断するサーバーであるということです。理由は聞かないでください。

したがって、最初のサーバーがユーザーが認証されていると判断した場合、サーバーは応答し418 I'm a teapotます。次に、NGINXはトラフィックを内部で2番目のサーバーに再ルーティングします。ブラウザに関する限り、それは単一のリクエストでした。

これはHTCPCPコード418の精神に基づいています。ティーポットを使用してBREWを実行しようとすると、適切な応答は「私はその要求を処理できる種類のものではありませんが、他の人がいる可能性がある」です。..言い換えれば、「私はティーポットです。コーヒーメーカーを見つけてください。」(2番目のサーバーはコーヒーメーカーです)。

最終的に、418はRFC 7231で明示的に定義されいませんが、それでも4xx (Client Error)。の傘でカバーされています。

6.応答ステータスコード

  • 4xx(クライアントエラー):要求に不正な構文が含まれているか、実行できません

6.5。クライアントエラー4xx

  • ステータスコードの4xx(クライアントエラー)クラスは、クライアントがエラーを起こしているように見えることを示します。HEAD要求に応答する場合を除いて、サーバーは、エラー状況の説明と、それが一時的または永続的な状態であるかどうかを含む表現を送信する必要があります。これらのステータスコードは、すべてのリクエスト方法に適用できます。ユーザーエージェントは、含まれている表現をユーザーに表示する必要があります。

2
Acceptヘッダーがない場合、418で応答するサードパーティプロバイダー(本当に悪いプロバイダー)があります。ただ悪いからだといつも思っていましたが、実はこれが何が起こっているのかを説明しています。それでもかかわらず、彼らのサーバのうち、そのステータスコードをリークするためにそれらを許していません
ホフマン

7
@Hoffmann 400 BadRequestまたは415Unsupported Media Typeで応答するのが適切だった可能性があります。4xxコードはクライアントエラーを表すため、そのように解釈できます。
wizulus

1
このステータスコードはhttp、Python3.9の標準ライブラリモジュールに追加されます。
BramAppel

60

HTTP応答コード418は、RFC 2324(「ハイパーテキストコーヒーポット制御プロトコル(HTCPCP / 1.0)」)およびRFC 7168(「茶の流出アプライアンス用のハイパーテキストコーヒーポット制御プロトコル(HTCPCP-TEA)」)プロトコルで最初に定義されました

ウィキペディアによる:HTTPステータスコードのリスト:#418

このコードはの一つとして、1998年に定義されていた伝統的なIETFエイプリルフールのジョークで、RFC 2324ハイパーテキストコーヒーポット制御プロトコルは、とされる実際のHTTPサーバによって実装される見込みはありません。RFCは、このコードはコーヒーを淹れるように要求されたティーポットによって返される必要があると指定しています。このHTTPステータスは、Google.comを含む一部のウェブサイトでイースターエッグとして使用されます。


10
それが実際のステータスコードではないことを本当に明確にする価値があります。公式のリストはこちらです:iana.org/assignments/http-status-codes/...
エバート

@Evert RFCの何かが「公式」になるかどうかに影響するものは何ですか?コメントをお答えしていただけませんか。
モハン

@Mohan私はおそらく少し間違えるので、IETFと標準化プロセスを小さなコメントに書き込もうとするのは気分が悪いです。最終的には、これは関連するIETFワーキンググループにあると思います。
2018

Webアプリを作成するときに、プレースホルダーまたは「todo」として使用します。com.org.uk/phones-telecoms-and-internet/の架空の電話番号にいくぶん似た考え私はそれが真剣に使われることは決してないだろうと確信しています。
ChrisHuang-Leaver20年

14

ここに画像の説明を入力してください

はい、実際の本番サーバーからHTTP418が戻ってきたことを確認できます。それは存在します。


5
WebExceptionクラスは、要求で返された応答コードとステータステキストを表示します。応答ヘッダーの最初の行が「432OneZero」の場合、メッセージは「リモートサーバーがエラーを返しました:(432)OneZero」になります。このエラーが発生したときに呼び出していたサーバーと、それが実行していたソフトウェアを知っておくと、さらに役立つ場合があります。
wizulus

6

はい、それはインターネットエンジニアリングタスクフォースによって公式RFCとして実際に公開されたという点で「実際の」コードですが、RFCは4月1日に公開され、エイプリルフールのジョークとして意図されていました(他のHyper Text Coffee Pot Controlと一緒に)プロトコル)、合法的な実装用ではありません。そのため、ほとんどのサイトではイースターエッグとして使用していますが、それ以外の場合は避けてください。このコメントで指摘されているように、400(Bad Request)のようなより適切なステータスが存在することがよくあります。とはいえ、ITコミュニティのおかげで、これは予約済みのコードになっているので、すぐにどこかに行くとは思わないでください。

特に、Larry Masinter(Wikipediaが主張するRFCの作成者)によると、問題のHTTP拡張は、実際には(風刺的な)目的を果たします。「HTTPが不適切に拡張された多くの方法を識別します」。


1

418を、かつては半分だった予約済みコードとして扱う方が安全だと思います。公式の意味ですが、現在は正式に「割り当てられていません」。

歴史的に、これらのコードについては現在とは異なる考え方がされてきたと思います。これは今日は無意味で面白いように聞こえます。おそらくそうではありませんでしたか?

言い換えれば、私はこのコードの使用を避けます。


「おそらくそうではなかった」いいえ、実際にはエイプリルフールのジョークにすぎません。RFCが出た4月の何日に注意を払っていない人々は、それが深刻なことだと思ったかもしれません!
ツイストコード
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.