HTTP ステータスコード
HTTP ステータスコードの意味を調べ、間違えやすい組 — 401 と 403、301 と 308、400 と 422 — を見分けます。
どちら側からでも探せます。
46件
| コード | 理由句 | いつ使うか |
|---|---|---|
| 100 | Continue | |
| 101 | Switching Protocols | WebSocket に切り替えるときに使います。 |
| 103 | Early Hints | 本当の応答ができる前に先読みの手がかりを送ります。 |
| 200 | OK | 成功した要求の既定値です。 |
| 201 | Created | 新しい資源ができました。Location ヘッダーでその場所を指します。 |
| 202 | Accepted | 受け付けただけで終わっていません。呼び出した側が確認し直します。 |
| 204 | No Content | 成功して返すものがありません。本文を入れても無視されます。 |
| 206 | Partial Content | Range ヘッダーに応えてファイルの一部を返します。 |
| 301 | Moved Permanently | 恒久的な移動。クライアントがメソッドを GET に変えても構いません。 |
| 302 | Found | 一時的。こちらもメソッドが GET に変わり得ます。 |
| 303 | See Other | 結果は別の場所から取ってくれという意味で、常に GET です。 |
| 304 | Not Modified | キャッシュがまだ使えます。本文は送りません。 |
| 307 | Temporary Redirect | 302 と同じですがメソッドが保たれます。 |
| 308 | Permanent Redirect | 301 と同じですがメソッドが保たれます。 |
| 400 | Bad Request | 要求をまったく理解できませんでした。 |
| 401 | Unauthorized | 認証されていません。名前に反して権限ではなく身元の問題です。 |
| 402 | Payment Required | |
| 403 | Forbidden | 誰かは分かっていて、それでも駄目です。 |
| 404 | Not Found | そんな資源が無いか、あると言うつもりが無いという意味です。 |
| 405 | Method Not Allowed | パスはあり、この動詞がありません。使えるものを Allow に書きます。 |
| 406 | Not Acceptable | クライアントが求めた形式のどれも作れません。 |
| 408 | Request Timeout | |
| 409 | Conflict | 今の状態とぶつかります。鍵の重複が代表例です。 |
| 410 | Gone | 意図的に削除され、戻ってきません。 |
| 411 | Length Required | |
| 412 | Precondition Failed | If-Match や If-None-Match の条件が合いませんでした。 |
| 413 | Content Too Large | 本文がサーバーの受け入れる大きさを超えました。 |
| 414 | URI Too Long | |
| 415 | Unsupported Media Type | Content-Type がこの窓口の扱う形式ではありません。 |
| 416 | Range Not Satisfiable | |
| 418 | I'm a teapot | 1998年のエイプリルフールの冗談です。今も登録簿に残っています。 |
| 422 | Unprocessable Content | 形式は正しく意味が誤っています。検証エラーによく使います。 |
| 425 | Too Early | |
| 426 | Upgrade Required | |
| 428 | Precondition Required | |
| 429 | Too Many Requests | 要求が多すぎます。いつ再試行するかを Retry-After で伝えてください。 |
| 431 | Request Header Fields Too Large | |
| 451 | Unavailable For Legal Reasons | 削除命令などの法的理由で塞がれています。 |
| 500 | Internal Server Error | 処理できなかった失敗です。誰も狙ってはいけない最後の網です。 |
| 501 | Not Implemented | |
| 502 | Bad Gateway | 上流のサーバーがおかしなものを返しました。 |
| 503 | Service Unavailable | 落ちているか詰まっていて、戻る予定です。 |
| 504 | Gateway Timeout | 上流のサーバーが時間内に答えませんでした。 |
| 505 | HTTP Version Not Supported | |
| 507 | Insufficient Storage | |
| 511 | Network Authentication Required | 先にサインインを求める公衆無線のような関門です。 |
間違えやすい組
401403
401 は誰か分からないという意味、403 は分かったうえで駄目という意味です。
301308
301 はクライアントが POST を GET に変えても構いません。308 はメソッドを保ちます。API には 308 を。
302303
302 はメソッドが変わり得て、303 は常に GET になります。フォーム送信の後は 303 です。
400422
400 は本文を読めなかった場合、422 は読めたが中身が誤っていた場合です。
404410
404 は無いという意味、410 は意図的に消したのでもう聞くなという意味です。
502503
502 は上流が変なものを返した場合、503 はこのサーバーが今働けない場合です。
ファイルはサーバーに送信されず、ブラウザ内だけで処理されます。
使い方
登録もインストールも不要、回数制限もなく無料で使えます。
番号か理由句の一部を入れれば見つかります。入力するそばから絞り込まれ、各行にはそれをいつ返すべきかが付いています。
最初の桁が種類を決めます。1xx は通知、2xx は成功、3xx はリダイレクト、4xx は要求側の誤り、5xx はサーバー側の誤りです。この表に無いコードでもそこまでは分かります。
4xx と 5xx の分け方は実務で重みが違います。壊れた要求に 500 を返すと当番が存在しない障害を探し回りますし、落ちた処理に 400 を返すと本物の障害が埋もれます。
下の組はコードレビューで実際に議論になるものです。401 は誰か分からないという意味、403 は分かったうえで駄目という意味です。権限の問題に 401 を返すと、すでに送った資格情報をもう一度送れと言っていることになります。
理由句は規格のままにして翻訳しません。実際に回線を流れる文字がそれだからです。
入力した値がサーバーに送られることはありません。ブラウザの中だけで探します。