Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
先輩と覚える HTTP ステータスコード

先輩に学ぶ HTTP Status Code

超雑にまとめました。修正してください。

登場人物

  • アプリケーション先輩: いつも忙しい。横に広がるのが得意(デブじゃない)。
  • 後輩: 頼んでばっかしで役に立たない。
  • サーバー先輩: アプリケーション先輩と仲がいい。Unix Socket でつながるくらい仲良し。
  • プロクシ先輩: アプリケーション先輩とかサーバー先輩と後輩の間を取り持って代わりに伝えたりしてくれる。たまに勝手にレスポンスを書き換える。

1xx 系

100 Continue

後輩「あ、先輩!お願いが!」

アプリケーション先輩「おー、聞いてやる。詳しく話せ」

101 Switching Protocols

後輩「せんぱーい、お願いなんですけどー」

アプリケーション先輩「ちょっと待て、お前 HTTP 1.0 で喋るな、 HTTP 1.1 か TLS 1.0 でしゃべれ」

102 Processing

後輩「というお願いなんです、よろしくおなしゃーす」

アプリケーション先輩「おー、わかった。でもちょっと時間かかるからちょっと待ってもらっていい?タイムアウトはちょっと勘弁な」

2xx 系

200 OK

後輩「っつーことなんで、よろしくおなしゃーす!」

アプリケーション先輩「ほい、これでいいな。持ってけ」

201 Created

後輩「ってことで、ちょっとこれ作って欲しいんすよー(PUT」

アプリケーション先輩「ん、あーできたぞ。 Location の場所に置いとくから取りいけよ」

202 Accepted

後輩「ってことで、ちょっとこれ作って欲しいんすよー(PUT」

アプリケーション先輩「いいけど……いつ終わるかわかんねーし、ていうかもしかしたら作らんかもしらんからな」

203 Non-Authoritative Information

後輩「ってことでよろしくお願いしますー」

プロクシ先輩「おー、なんかいろいろ足したかもしれんけど、これだってアプリの奴言ってたぞ」

204 No Content

後輩「せんぱーい、これよろしくおねがいしまーす」

アプリケーション先輩「(無言だがやりきった表情)」

205 Reset Content

後輩「ええーとこれで最後かな、先輩おなしゃーす」

アプリケーション先輩「おー、終わったぞ。お前一回顔拭いてこい」

206 Partial Content

後輩「こっから、ここまでだけ欲しいんすよね」

アプリケーション先輩「ほい、まぁこんなところか?」

207 Multi-Status

後輩「これとこれとこれお願いします!」

アプリケーション先輩「あー、なんかちょっと混ざったわ。一個目は出来なかった、二個目はうまくいった、三個目はそんなもんない!」

208 Already Reported

後輩「これをここにバインドしてほしくてー」

アプリケーション先輩「それもう先週やったろ。これのことじゃね」

226 IM Used

後輩「いつものあれください!」

アプリケーション先輩「ほい、いつもの。あーでもちょっとここだけ変わったんだよ。こっからここだけ」

3xx 系

300 Multiple Choices

後輩「南中 1 年、男、野球部の後輩なんすけどー」

アプリケーション先輩「まてまてまて、どれがお前の名前だ」

301 Moved Permanently

後輩「/image が欲しいんすけどー」

アプリケーション先輩「ん?ああそれ今度から /photos になったから。参照先かえとけよ」

302 Found

後輩「あのー、 /metal_bat が欲しいんすけど」

アプリケーション先輩「あー、それいまそこにねーんだわ。 /dirty/metal_bat にあるからそっち取り行って。この日まではそっちにある。期間指定しなかったらずっとそっちな」

303 See Other

後輩「リクエスト終わったんでまたこっちきましたー」

アプリケーション先輩「あー違う違うここじゃない!こっちだこっち!」

304 Not Modified

後輩「せんぱーい、先週見してもらったあれなんか変わりました?」

アプリケーション先輩「なんもかわってねーよ、お前のキャッシュの中身と一緒」

305 Use Proxy

後輩「せんぱいせんぱーい!」

アプリケーション先輩「っと、まった、こいつ通して用事投げてくれ(プロクシ先輩の連絡先)」

306 (Unused)

アプリケーション先輩「おれもそろそろ貯金とか考えるか……」

307 Temporary Redirect

後輩「せんぱい、アレかしてくださーい」

アプリケーション先輩「ん、今ちょっとここにない。あっちにある。また次取りに来るときにはこっちに戻しとから」

308 Permanent Redirect

後輩「先輩、 /image/new で新しく画像作りたいんすけど」

アプリケーション先輩「あーだからそれは /photos/new に変わったんだよ。あーリダイレクトする時にメソッド変えんなよ。後今後は /photos/new だかんな」

350

アプリケーション先輩「WIRE……うわ、なっつかしいなおい」

4xx 系

400 Bad Request

後輩「せんぱあqwせdrftgyふじこ」

アプリケーション先輩「何ってるかわっかんねーよ、出なおせ」

401 Unauthorized

後輩「せんぱーーーい!」

サーバー先輩「お前誰だおい!?誰に許しもらってここにきてんだ!?アァ!?帰れ!!二度と来んなよ!!」

402 Payment Required

後輩「先輩、お願いごとがー」

アプリケーション先輩「あーもーなんだようっせーなしらねーよお前が言ってること全然わからんわ俺は金欠で困ってんだよくっそーもー」

403 Forbidden

後輩「せんぱーい、これお願いしますー」

アプリケーション先輩「ダメ。2 度と頼むな。理由がしりたきゃエンティティボディでも見ろ」

404 Not Found

後輩「せんぱい、これください!」

アプリケーション先輩・サーバー先輩「んなもんねーよ」

405 Method Not Allowed

後輩「先輩、ちょっとここに DELETE 打ちたいです!」

アプリケーション先輩「DELETE はダメ。 POST か GET なら Allow」

406 Not Acceptable

後輩「せんぱーい、俺ですー、お願いごとがー」

アプリケーション先輩「俺じゃわかんねーよ俺じゃ。俺なんて奴しらねーし。誰だよ。詐欺か?」

407 Proxy Authentication Required

後輩「せんぱー」

プロクシ先輩「俺から伝えてや……ん?お前誰だ。認証してねーよな?」

408 Request Timeout

後輩「せ・ん・ぱ・い・お・ね」

アプリケーション先輩「喋るのがおっせえ。まとめてから出なおせ」

409 Conflict

後輩「ここをこう変更したいんですけどー」

アプリケーション先輩「ん?なんか元ソース古くね?っつーかお前の前にきた奴がそこ変更してったからちょっと確認してからやり直せ」

410 Gone

後輩「先輩、そういえば熟女ものの AV もってま」

アプリケーション先輩「捨てた。もう一度言うぞ、捨てた。二度とあの AV の話をするな。

411 Length Required

後輩「でですねー、お願いなんですけどーなんていうかマジ複雑で説明するのも大変っていうかなんていうかむにゃむにゃ」

アプリケーション先輩「いつ終わるか先に言ってくんね?なげぇよ」

412 Precondition Failed

後輩「確か最後の更新日は一昨日だったとおもうんすけど……」

アプリケーション先輩「間違ってる、最後の更新日は昨日。キャッシュなおせ」

413 Request Entity Too Large

後輩「あ、えっと、今日の注文はちょっと3時間くらいかかるんですが……(小一時間お願いの注文内容をしゃべり続ける)」

アプリケーション先輩「あと2時間も聞き続けろってか?な・げ・ぇ・よ!」

414 Request-URI Too Long

後輩「/a/b/c/d/e/f/g/h/i/j/k ... のリソースが欲しいんすけど」

アプリケーション先輩「え、どこ?なに?パス長すぎて最初の方忘れた」

415 Unsupported Media Type

後輩「先輩!秘蔵の AV 貸してくださいよ〜〜」

アプリケーション先輩「動画など甘え。俺は官能小説以外認めぬ」

416 Requested Range Not Satisfiable

後輩「先輩!これの 3000 キロバイトから先ぜーんぶください!」

アプリケーション先輩「それ、ファイルサイズ 1000 キロバイトだから」

417 Expectation Failed

後輩「先輩!俺超カッケーオレオレ暗号考えたんです!シード Expect に入れて今からリクエストしますね!(謎の暗号文)」

アプリケーション先輩「読  め  ね  ー  よ

418

アプリケーション先輩「IDLE タイムのティータイムは実にいいな……この揺れる HTML5 の仕様など得も言われぬ風流さだぜ……」

420, 421

アプリケーション先輩「ステータスコードの予約ができても、ヱヴァ Q の予約が出来なければなんの意味もないッ……!」

422 Unprocessable Entity

後輩「こういうオブジェクトストアしといて欲しいんです!(XML を投げる」

アプリケーション先輩「DTD 読みなおしてから出なおせ!」

423 Locked

後輩「このファイルをこっちにコピーしてほしいんですよ」

アプリケーション先輩「今別のやつがそのファイルロックしてるから動かせない。無理」

425 (Reserved for WebDAV advanced collections expired proposal)

後輩「あのファイルって上から何番目でしたっけ?」

アプリケーション先輩「上が昇順か降順かという定義から始めたいところだが、そのリソースが属する集合は順不同だ。却下」

426 Upgrade Required

後輩「せんぱ」

アプリケーション先輩「HTTP 1.1 なんて時代遅れなプロトコルで話しかけてくんな!もっと素敵なプロトコルにアップグレードしてから出なおせ!!!!」

428 Precondition Required

後輩「先輩、俺、彼女欲しいんですけど」

アプリケーション先輩「女つってもいろいろあんだろ、美人とか可愛いとか素直とかサバサバしてるとか。漠然と求めるな」

429 Too Many Requests

後輩「先輩」後輩「先輩」後輩「先輩」後輩「先輩」

アプリケーション先輩「や か ま し い。ちょっと待って順番に来い」

431 Request Header Fields Too Large

後輩「あ、あとこれリクエストの Cookie です(5GB」

アプリケーション先輩「もう HTTP 越しじゃなくてそれ USB メモリかなんかで郵送しろよ。こんなヘッダ解析したくねーよ……」

451 Unavailable For Legal Reasons

後輩「先輩!あの激エロファイルください!」

アプリケーション先輩「警察 きた 無理 やばい」(電話口の向こうから聞こえるドアを殴りつける音)

5xx 系

500 Internal Server Error

後輩「せんぱーい!今日もおりいってお願いがー!」

アプリケーション先輩「ちょ、ごめ、下痢で、ウッ……無理……」

501 Not Implemented

後輩「おりゃー! SENPAI メソッドでリクエストだーっ!」

アプリケーション先輩「おりゃー!テメー一回しばき倒して HTTP の基礎から勉強し直させたろか!!!!」

502 Bad Gateway

プロクシ先輩「いや、俺は別にピンはねとか隠したりとかしてねーよ?アプリの奴がなんか変なレスポンス返してくるっていうか、応答ないっていうかわけわかんねーっつーかまぁとにかく変な感じでさ?いや、俺はマジ悪くないよ?」

503 Service Unavailable

後輩「せんぱー」

アプリケーション先輩「」

後輩「し、死んでる……」

504 Gateway Timeout

プロクシ先輩「いやだからマジ俺は全然わるくないよ?無罪どころかこれマジ冤罪じゃね?おかしくね?だってアプリの奴がまったく連絡返してこねーんだもん。俺完全に被害者じゃん?いやー完全に俺は悪くないね?あ、DNS のプロセスおちてら」

505 HTTP Version Not Supported

後輩「(勝ち誇った顔)」

アプリケーション先輩「確かに HTTP 1.1 なんて時代遅れだからアップグレードしろとは言ったが HTTP 3.0 ってなんだそれ。Web 3.0 !ってか?アホか?」

506 Variant Also Negotiates

後輩「どもー、毎度おなじみ後輩ですー」

アプリケーション先輩「おーお前か、っとあれ、お前の名簿どこやったっけな?あれ、みっかんね、ごめん、ちょっとなんかお前認証出来ねーわ。ちょいあとでまた来て」

508 Loop Detected

後輩「後輩「後輩「後輩「後輩「...」」」」」

アプリケーション先輩「無限ループってこえーよなー(無言でリクエストをぶった切る」

510 Not Extended

後輩「無理やりにでもやらせてやるー!」

アプリケーション先輩「Man ヘッダぐらいつけてから出なおせこのドサンピンがァーーー!」

511 Network Authentication Required

後輩「せーんぱい!」

プロクシ先輩「おっと、アプリと橋渡ししてほしければ俺への参加認証を先にすませてもらおうか?ん? cert ファイルはどこだね?ンン〜?」

まとめ

先輩かっけー

@moro

This comment has been minimized.

Show comment Hide comment
@moro

moro Aug 22, 2012

422は http://webdav.todo.gr.jp/download/rfc2518j.txt によれば

422 (Unprocessable Entity)ステータスコードは、サーバはリクエストエンティティのコンテントタイプは解釈できて(このため、415(Unsupported Media Type)ステータスコードは適切ではない)、エンティティの文法も正しい(この結果、400(Bad Request)ステータスコードは適切ではない)が、エンティティに含まれる命令を処理できない場合に返却される。例えば、XMLリクエストボディが整形型(文法的には正しい)であるが、XMLの命令がセマンティカルにおかしい場合にこのエラー状態が発生する。

なので、逆ではないでしょうか。構文エラーであれば上記引用部分にもあるように400にするのが適切な気がします。

moro commented Aug 22, 2012

422は http://webdav.todo.gr.jp/download/rfc2518j.txt によれば

422 (Unprocessable Entity)ステータスコードは、サーバはリクエストエンティティのコンテントタイプは解釈できて(このため、415(Unsupported Media Type)ステータスコードは適切ではない)、エンティティの文法も正しい(この結果、400(Bad Request)ステータスコードは適切ではない)が、エンティティに含まれる命令を処理できない場合に返却される。例えば、XMLリクエストボディが整形型(文法的には正しい)であるが、XMLの命令がセマンティカルにおかしい場合にこのエラー状態が発生する。

なので、逆ではないでしょうか。構文エラーであれば上記引用部分にもあるように400にするのが適切な気がします。

@rosylilly

This comment has been minimized.

Show comment Hide comment
@rosylilly

rosylilly Aug 23, 2012

@moro

修正してみました。

Owner

rosylilly commented Aug 23, 2012

@moro

修正してみました。

@bravosix

This comment has been minimized.

Show comment Hide comment
@bravosix

bravosix Apr 10, 2013

先輩かっけーわろた

先輩かっけーわろた

@aoisensi

This comment has been minimized.

Show comment Hide comment
@aoisensi

aoisensi Sep 27, 2016

451...

451...

@GenbuHase

This comment has been minimized.

Show comment Hide comment
@GenbuHase

GenbuHase Nov 27, 2016

これは草

これは草

@tatsuya-yokoyama

This comment has been minimized.

Show comment Hide comment
@tatsuya-yokoyama

tatsuya-yokoyama Jun 11, 2017

これはおもしろいですねw

これはおもしろいですねw

@torut

This comment has been minimized.

Show comment Hide comment
@torut

torut Sep 17, 2017

👍

torut commented Sep 17, 2017

👍

@tarousinpo

This comment has been minimized.

Show comment Hide comment
@tarousinpo

tarousinpo Feb 20, 2018

>アプリケーション先輩「(無言だがやりきった表情)」
いいですね

>アプリケーション先輩「(無言だがやりきった表情)」
いいですね

@mather

This comment has been minimized.

Show comment Hide comment
@mather

mather Mar 14, 2018

508 Loop Detected

後輩「よろしくおねがいしまーす!」
アプリケーション先輩「俺じゃなくて、こっちのやつに聞いてくれよ。」
後輩「了解っす!先輩お願いしまーす!」
アプリケーション先輩「俺じゃなくて、こっちのやつに聞いてくれよ。」
後輩「了解っす!先輩お願いしまーす!」
アプリケーション先輩「俺じゃなくて、こっちのやつに聞いてくれよ。」

後輩「了解っす!先輩お願いしまーす!」
サーバー先輩「無限ループ怖くね?そのリクエスト却下。」

mather commented Mar 14, 2018

508 Loop Detected

後輩「よろしくおねがいしまーす!」
アプリケーション先輩「俺じゃなくて、こっちのやつに聞いてくれよ。」
後輩「了解っす!先輩お願いしまーす!」
アプリケーション先輩「俺じゃなくて、こっちのやつに聞いてくれよ。」
後輩「了解っす!先輩お願いしまーす!」
アプリケーション先輩「俺じゃなくて、こっちのやつに聞いてくれよ。」

後輩「了解っす!先輩お願いしまーす!」
サーバー先輩「無限ループ怖くね?そのリクエスト却下。」

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment