418「私はティーポットです」は本当にHTTP応答コードですか?
応答コードのリストを含め、インターネット上でこれに関するさまざまな参照がありますが、それが奇妙なジョークであるかどうかはわかりません。
418「私はティーポットです」は本当にHTTP応答コードですか?
応答コードのリストを含め、インターネット上でこれに関するさまざまな参照がありますが、それが奇妙なジョークであるかどうかはわかりません。
回答:
私はこのコードを使用します。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要求に応答する場合を除いて、サーバーは、エラー状況の説明と、それが一時的または永続的な状態であるかどうかを含む表現を送信する必要があります。これらのステータスコードは、すべてのリクエスト方法に適用できます。ユーザーエージェントは、含まれている表現をユーザーに表示する必要があります。
http
、Python3.9の標準ライブラリモジュールに追加されます。
HTTP応答コード418は、RFC 2324(「ハイパーテキストコーヒーポット制御プロトコル(HTCPCP / 1.0)」)およびRFC 7168(「茶の流出アプライアンス用のハイパーテキストコーヒーポット制御プロトコル(HTCPCP-TEA)」)プロトコルで最初に定義されました。
ウィキペディアによる:HTTPステータスコードのリスト:#418
このコードはの一つとして、1998年に定義されていた伝統的なIETFエイプリルフールのジョークで、RFC 2324、ハイパーテキストコーヒーポット制御プロトコルは、とされる実際のHTTPサーバによって実装される見込みはありません。RFCは、このコードはコーヒーを淹れるように要求されたティーポットによって返される必要があると指定しています。このHTTPステータスは、Google.comを含む一部のウェブサイトでイースターエッグとして使用されます。
はい、それはインターネットエンジニアリングタスクフォースによって公式RFCとして実際に公開されたという点で「実際の」コードですが、RFCは4月1日に公開され、エイプリルフールのジョークとして意図されていました(他のHyper Text Coffee Pot Controlと一緒に)プロトコル)、合法的な実装用ではありません。そのため、ほとんどのサイトではイースターエッグとして使用していますが、それ以外の場合は避けてください。このコメントで指摘されているように、400(Bad Request)のようなより適切なステータスが存在することがよくあります。とはいえ、ITコミュニティのおかげで、これは予約済みのコードになっているので、すぐにどこかに行くとは思わないでください。
特に、Larry Masinter(Wikipediaが主張するRFCの作成者)によると、問題のHTTP拡張は、実際には(風刺的な)目的を果たします。「HTTPが不適切に拡張された多くの方法を識別します」。
418を、かつては半分だった予約済みコードとして扱う方が安全だと思います。公式の意味ですが、現在は正式に「割り当てられていません」。
歴史的に、これらのコードについては現在とは異なる考え方がされてきたと思います。これは今日は無意味で面白いように聞こえます。おそらくそうではありませんでしたか?
言い換えれば、私はこのコードの使用を避けます。