🔎

奇妙なHTTPステータスコード達

2023/04/09に公開

インターネットサーフィンをしていると様々なステータスコードに出会うことはありませんか? 404 Not foundやJavascriptで非同期通信するときの正常な200など、RFCの仕様書などでこれらは全て規格として決まっています。
今回はその中でも偶然見つけた奇妙なステータスコードを紹介したいと思います。

HTTP 451 Unavailable For Legal Reasons

MDNのドキュメントはこちら
https://developer.mozilla.org/ja/docs/Web/HTTP/Status/451

このステータスコードは国家にとって国民に知られたくない情報が検閲によって表示できないことを表しています。ネット検閲の陰謀によるものです。
というのはもちろん冗談でして、普通に著作権に反した違法コンテンツなど法的な理由で使用できないことを表しています。検閲は言い過ぎですが、国によって表示される・表示されないには差があるみたいです。
ところでこの451という番号には由来があります。
勘の良い文系の人なら気づくかもしれませんが、この番号はレイ・ブラッドベリの「華氏451度」という、本を読むこと・所持することが禁止され、見つかった場合は逮捕されて本は燃やされる未来を描いた古典ディストピア小説のタイトルから来ています。華氏451度は摂氏233度(233℃)、つまり紙が燃え始める温度であり、HTTP 451は検閲を表すために作られたことから、ちょうど内容にあったレイ・ブラッドベリの「華氏451度」に因んで?名付けられました。
ちなみにですが「華氏451度」は「国家の検閲」を表しているように思えますがブラッドベリ自身は「テレビ社会の危険性」を表しているそうです。
451について詳しく解説しているZennの記事もありました。
https://zenn.dev/quiver/articles/8a50079422d0b2

HTTP 418 I'm a teapot

MDNのドキュメントはこちら
https://developer.mozilla.org/ja/docs/Web/HTTP/Status/418

名前の通りです。クライアントが朝のコーヒーを飲みたいとサーバーに要求すると「僕ティーポットなんでコーヒーは入れません」と返ってきます。
これはエイプリフールのジョークとして実装されたものであり、ただ単に処理したくないリクエストを追い返す方法として最適です。これは一時期とても流行ったそうです。
自分もイマイチここからわからないのですが、HTTP 418は元々拡張であり、正式なものではなかったようです。しかも仕様書の仕様に沿ってなかったので、「間際らしいからもうやめようぜ」ということになりましたが、当然それに反対し「418を残そうぜ」という人々が現れました。
「418 I'm a teapotを消せ!」という勢力に対し「だめだ、418 I'm a teapotは残すんだ!」という勢力がそれぞれ争いました。(Save 418 movement)中には418を残そうとして活動した当時高校生の少年が立ち上げたサイトもあります。
https://save418.com/
418保存活動はブレイクし、Twitterではハッシュタグ#save418が多く使われるほどになりました。
結局、2022年に公式で「418 Unused」というのが定まり、418を完全に削除するのではなく、いつの日かのために予約することにしよう、となりました。ただし、それでも基本的にI'm a teapotを使わないことになったみたいです。

ちなみに、こういったI'm a teapotはGoogleにもあります。https://www.google.com/teapot

ティーポットをクリックすると実際にティーポットがお茶?を注ぎます。

奇妙なHTTPステータスコード達をFastAPIで実装してみた

自分はネット通信に関しては全くの素人なのですが、任意のステータスコードをFastAPI(Pythonのやつです)で返せると知ったので早速虚偽的に実装してみました。

実装したPythonコード

実際にアクセスするとこんな感じです。

ターミナルにもしっかり表示されています。

idが1の場合、ティーポットを返し、2の場合検閲されたと返します。それ以外はいつもの200です。もちろんデタラメですが、ティーポットに関しては、実用性があるなと思いました。その情報を編集している時や、一時的にブロックしたい場合(なら403でもいいじゃない)など、使い方は無限大だと思います。さっきのサイトにもそのように書いてあります。

The application of such a status code is boundless.
(by Google translate:このようなステータス コードの用途は無限です。)

まとめ

プログラミングやWeb開発にジョークが存在することはいいことだと思います。ジョークはどんな時でも開発に笑いを与えてくれ、やる気にもつながります。
個人的には418 I'm a teapotは絶対に実装したいなと思います。SEO的には賛否両論ありそうですけど(勿論ユーザーは「どういうことだ?」と混乱するでしょう。でもそれで調べてみて意味をわかった時、ユーザーは思わずクスッと笑ってしまうでしょう)。プログラミングにも笑いは必須です!

参考文献

たくさんのサイトを見て書きました。

418

https://developer.mozilla.org/ja/docs/Web/HTTP/Status/418
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1418689.html
https://esprlog.net/archives/3245
https://ja.wikipedia.org/wiki/Hyper_Text_Coffee_Pot_Control_Protocol#コマンドと応答
https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-semantics-03#section-9.5.19

415

https://developer.mozilla.org/ja/docs/Web/HTTP/Status/451
https://ja.m.wikipedia.org/wiki/華氏451度
https://ja.wikipedia.org/wiki/HTTP_451

FastAPIの実装

https://self-methods.com/fastapi-status-code/

Discussion

Hidden comment