HTTPステータスコード一覧

# はじめに

HTTP（Hypertext Transfer Protocol）ステータスコードは、HTTP リクエストが正常に処理されたかどうか、またはリクエストに対してエラーが発生したかどうかを示します。これらのステータスコードは、クライアントとサーバー間の通信状態を示す重要な役割を果たします。以下は、主要な HTTP ステータスコードの一覧です。

HTTP ステータスコードは 5 つのクラスに分けられ、それぞれが異なる意味を持ちます。これらのコードを理解することで、ウェブアプリケーションの開発やデバッグがより効率的になります。また、ユーザーに対して適切なフィードバックを提供するためにも重要です。

LINE スタンプ「[HTTP Status Codes](https://store.line.me/stickershop/product/3960211/ja)」を購入した際に全てのコードを説明することができなかったため、この記事を作成しようと考えました。このスタンプを通じて、より深く HTTP ステータスコードの意味と用途を理解していただければと思います。

この記事では、各ステータスコードの詳細な説明とともに、使用例や関連情報も紹介します。これにより、開発者が日常的に直面する HTTP ステータスコードの意味を迅速に把握し、問題解決に役立てることができるでしょう。

## 1xx Informational

これらのステータスコードは情報提供のために使用されます。リクエストが受け取られ、処理が継続中であることを示します。

- **100 Continue**: リクエストの初期部分は受け取られ、クライアントはリクエストを続行しても良い。通常、大きなデータを送信する前に、サーバーが受け入れる準備ができていることを確認するために使用されます。
- **101 Switching Protocols**: プロトコルを切り替える要求が受け入れられた。例えば、HTTP から WebSocket へのプロトコル切り替え要求が成功した場合に返されます。
- **102 Processing**: リクエストが受理され、処理が継続している（WebDAV）。長時間処理が続く場合にクライアントがタイムアウトしないようにするために使用されます。

## 2xx Success

これらのステータスコードは、リクエストが正常に受け取られ、理解され、処理されたことを示します。

- **200 OK**: リクエストが成功し、結果が返される。例えば、GET リクエストに対する正常な応答として使用されます。
- **201 Created**: リクエストが成功し、新しいリソースが作成された。POST リクエストで新しいリソースがサーバー上に生成された場合に返されます。
- **202 Accepted**: リクエストが受け付けられたが、まだ処理されていない。非同期処理が必要な場合に使用されます。
- **204 No Content**: リクエストは成功したが、返すべきコンテンツがない。データを削除する DELETE リクエストに対する応答などに使用されます。

## 3xx Redirection

これらのステータスコードは、リクエストに対して追加のアクションが必要であることを示します。

- **300 Multiple Choices**: 複数の選択肢があり、どれを使用するか決定する必要がある。例えば、異なるフォーマットで同じリソースが存在する場合に使用されます。
- **301 Moved Permanently**: リクエストされたリソースは恒久的に移動した。ブラウザは新しい場所に自動的にリダイレクトします。
- **302 Found**: リクエストされたリソースは一時的に異なる URI に存在する。ブラウザは新しい場所に自動的にリダイレクトしますが、元の URI を使用することが期待されます。
- **303 See Other**: リクエストに対する応答は他の URI で取得できる。POST メソッド後に GET メソッドを使用して新しいリソースを取得する場合などに使用されます。
- **304 Not Modified**: リクエストされたリソースは変更されていない。キャッシュされたリソースを使用するようにブラウザに指示します。
- **307 Temporary Redirect**: リソースは一時的に異なる URI に存在するが、将来的には同じ URI が使用される。ブラウザは同じ HTTP メソッドを使用して新しい場所にリクエストを送信します。
- **308 Permanent Redirect**: リソースは恒久的に異なる URI に移動した。ブラウザは将来のリクエストで新しい URI を使用します。

## 4xx Client Error

これらのステータスコードは、クライアント側のエラーを示します。

- **400 Bad Request**: サーバーが不正なリクエストを理解できない。無効なシンタックスを持つリクエストに対して返されます。
- **401 Unauthorized**: 認証が必要なリソースに対するリクエスト。適切な認証情報が提供されていない場合に返されます。
- **402 Payment Required**: 将来の使用のために予約されている（現在ほとんど使用されていない）。支払いが必要なサービスに対して使用される可能性があります。
- **403 Forbidden**: サーバーがリクエストを拒否している。認証情報があってもアクセス権がない場合に返されます。
- **404 Not Found**: リクエストされたリソースが見つからない。存在しないページへのアクセスに対して返されます。
- **405 Method Not Allowed**: リクエストされたメソッドは許可されていない。リソースが特定のメソッドをサポートしていない場合に返されます。
- **406 Not Acceptable**: リクエストされたリソースは Accept ヘッダーに従って提供できない。リソースがクライアントの受け入れ可能な形式でない場合に返されます。
- **408 Request Timeout**: サーバーがリクエストの完了を待ってタイムアウトした。クライアントがリクエストを送信するのに時間がかかりすぎた場合に返されます。
- **409 Conflict**: リクエストが現在のリソースの状態と矛盾している。リソースのバージョン管理に関連する競合が発生した場合に返されます。
- **410 Gone**: リクエストされたリソースは永久に利用できない。リソースがサーバーから削除された場合に返されます。
- **413 Payload Too Large**: リクエストペイロードがサーバーが処理できる容量を超えている。大きすぎるリクエストボディに対して返されます。
- **417 Expectation Failed**: Expect ヘッダーの要求がサーバーによって満たされなかった。サーバーが Expect リクエストヘッダーをサポートしていない場合に返されます。
- **423 Locked**: リソースはロックされている（WebDAV）。ロックされたリソースに対するリクエストに対して返されます。
- **426 Upgrade Required**: クライアントは異なるプロトコルにアップグレードする必要がある。新しいプロトコルを使用する必要がある場合に返されます。
- **429 Too Many Requests**: クライアントが一定時間内に送信したリクエストが多すぎる。レート制限が適用された場合に返されます。

## 5xx Server Error

これらのステータスコードは、サーバー側のエラーを示します。

- **500 Internal Server Error**: サーバー内部のエラー。予期しない状況やエラーが発生した場合に返されます。
- **501 Not Implemented**: サーバーがリクエストを実行する機能を持っていない。サーバーがサポートしていないメソッドに対して返されます。
- **502 Bad Gateway**: 不正な応答を受け取った。ゲートウェイやプロキシサーバーが上流サーバーから無効な応答を受け取った場合に返されます。
- **503 Service Unavailable**: サービスが利用できない。サーバーが一時的に過負荷状態にあるか、メンテナンス中である場合に返されます。
- **504 Gateway Timeout**: ゲートウェイやプロキシが上流サーバーからの応答をタイムアウトした。上流サーバーが応答を返すのに時間がかかりすぎた場合に返されます。
- **505 HTTP Version Not Supported**: サーバーがリクエストに使用された HTTP プロトコルバージョンをサポートしていない。