HTTPステータスコードとは?初心者向けに意味とよく使うコードを解説

API

HTTPステータスコードとは、ブラウザやAPIからのリクエストに対して、サーバーが処理結果を数字で返す仕組みです。

Webページを開いたとき、フォームを送信したとき、APIからデータを取得したときなどに、サーバーは処理結果としてステータスコードを返しています。

たとえば、ページが正常に表示できた場合は200、ページが見つからない場合は404、サーバー側で問題が起きた場合は500が返ることがあります。

この記事では、HTTPステータスコードの意味、分類、よく使うコード、Web制作やAPI開発での確認方法を初心者向けに解説します。

HTTPステータスコードとは

HTTPステータスコードは、サーバーから返ってくる処理結果を表す3桁の数字です。

ブラウザでWebページを開くと、ブラウザはサーバーに対して「このページをください」とリクエストを送ります。

サーバーは、そのリクエストに対してレスポンスを返します。

そのレスポンスの中に含まれているのがHTTPステータスコードです。

ブラウザ:/about/ のページをください
サーバー:200 OK です。ページを返します

ページが存在しない場合は、次のような結果になります。

ブラウザ:/not-found/ のページをください
サーバー:404 Not Found です。ページが見つかりません

HTTPステータスコードを見ると、リクエストが成功したのか、リダイレクトされたのか、エラーになったのかを確認できます。

HTTPステータスコードの分類

HTTPステータスコードは、先頭の数字によって大きく分類されます。

分類意味
100番台処理を継続している100 Continue
200番台リクエストが成功した200 OK
300番台別のURLへ移動する301 Moved Permanently
400番台クライアント側のリクエストに問題がある404 Not Found
500番台サーバー側で問題が起きている500 Internal Server Error

初心者がまず覚えたいのは、200301302400401403404500503です。

200番台:成功を表すステータスコード

200番台は、リクエストが成功したことを表します。

Webページが正常に表示された場合や、APIからデータを取得できた場合などに返ります。

コード名前意味
200OKリクエストが成功した
201Created新しいデータが作成された
204No Content成功したが返す本文がない

200 OK

200 OKは、リクエストが正常に成功したことを表します。

ブラウザでページが普通に表示された場合、多くは200が返っています。

GET /about/
200 OK

APIでデータを取得できた場合も、200がよく使われます。

GET /api/posts
200 OK

201 Created

201 Createdは、新しいデータが作成されたことを表します。

APIで新規投稿、会員登録、商品登録などを行った場合に使われることがあります。

POST /api/posts
201 Created

POSTで新しいデータを作ったときに使われることが多いステータスコードです。

204 No Content

204 No Contentは、処理は成功したが、返す本文がないことを表します。

たとえば、データ削除が成功したあと、レスポンス本文を返さない場合に使われます。

DELETE /api/posts/10
204 No Content

画面に表示するデータは返さないけれど、処理自体は成功している状態です。

300番台:リダイレクトを表すステータスコード

300番台は、別のURLへ移動することを表します。

URLを変更したときや、httpからhttpsへ転送するときなどに使われます。

コード名前意味
301Moved Permanently恒久的にURLが変更された
302Found一時的に別のURLへ移動する
304Not Modified前回から変更されていない

301 Moved Permanently

301 Moved Permanentlyは、URLが恒久的に変更されたことを表します。

記事のURLを変更した場合や、古いページから新しいページへ移動させたい場合に使います。

旧URL:/old-page/
新URL:/new-page/
301 Moved Permanently

SEOでは、ページを完全に移転した場合に301リダイレクトを使うことが多いです。

302 Found

302 Foundは、一時的に別のURLへ移動することを表します。

キャンペーンページへ一時的に移動させる場合や、ログイン状態に応じて別ページへ移動させる場合などに使われます。

302 Found

恒久的なURL変更なら301、一時的な移動なら302と考えると分かりやすいです。

304 Not Modified

304 Not Modifiedは、前回取得したデータから変更がないことを表します。

ブラウザのキャッシュを使う場面で出てくることがあります。

ページや画像、CSS、JavaScriptファイルなどが変更されていない場合、サーバーは304を返し、ブラウザは保存済みのデータを使います。

400番台:クライアント側のエラー

400番台は、リクエスト側に問題がある場合に返ります。

存在しないURLにアクセスした、ログインが必要なページに未ログインでアクセスした、権限がないページにアクセスした、という場合に使われます。

コード名前意味
400Bad Requestリクエスト内容が不正
401Unauthorized認証が必要
403Forbiddenアクセス権限がない
404Not Foundページやデータが見つからない
405Method Not Allowed許可されていないHTTPメソッド
429Too Many Requests短時間にリクエストが多すぎる

400 Bad Request

400 Bad Requestは、リクエスト内容が不正な場合に返ります。

APIに必要な値が足りない場合や、送信データの形式が間違っている場合などに使われます。

POST /api/users
400 Bad Request

フォームやAPIで400が返る場合は、送信しているデータの形式や必須項目を確認します。

401 Unauthorized

401 Unauthorizedは、認証が必要な場合に返ります。

ログインしていない状態で、ログインが必要なAPIやページへアクセスした場合などです。

GET /api/profile
401 Unauthorized

名前はUnauthorizedですが、実際には「認証が必要」という意味で使われます。

403 Forbidden

403 Forbiddenは、アクセス権限がない場合に返ります。

ログインはしていても、そのページやデータを見る権限がない場合などです。

GET /admin/
403 Forbidden

401は認証が必要、403は権限がない、という違いがあります。

404 Not Found

404 Not Foundは、ページやデータが見つからない場合に返ります。

存在しないURLにアクセスしたときによく見るステータスコードです。

GET /missing-page/
404 Not Found

Webサイト運営では、削除した記事、URL変更後のリンク切れ、入力ミスなどで404が発生します。

APIでは、指定したIDのデータが存在しない場合にも404が使われます。

GET /api/posts/9999
404 Not Found

405 Method Not Allowed

405 Method Not Allowedは、そのURLで許可されていないHTTPメソッドを使った場合に返ります。

たとえば、データ取得用のAPIにPOSTでアクセスした場合などです。

POST /api/posts/1
405 Method Not Allowed

APIを使うときは、GETPOSTPUTPATCHDELETEのどれを使うのか確認します。

429 Too Many Requests

429 Too Many Requestsは、短時間にリクエストを送りすぎた場合に返ります。

APIでは、利用回数の制限がある場合があります。

429 Too Many Requests

検索API、地図API、翻訳APIなどの外部APIを使う場合に見かけることがあります。

500番台:サーバー側のエラー

500番台は、サーバー側で問題が起きた場合に返ります。

プログラムのエラー、サーバー設定の問題、データベース接続の問題、メンテナンスなどで発生します。

コード名前意味
500Internal Server Errorサーバー内部でエラーが起きた
502Bad Gatewayゲートウェイやプロキシで問題が起きた
503Service Unavailableサービスが一時的に利用できない
504Gateway Timeoutゲートウェイやプロキシで応答が時間切れになった

500 Internal Server Error

500 Internal Server Errorは、サーバー内部でエラーが起きた場合に返ります。

PHPのエラー、設定ファイルのミス、サーバー側の処理失敗などで発生します。

500 Internal Server Error

WordPressでは、テーマやプラグインのエラー、.htaccessの設定ミス、PHPの問題などで表示されることがあります。

502 Bad Gateway

502 Bad Gatewayは、ゲートウェイやプロキシが不正な応答を受け取った場合に返ります。

Webサーバーとアプリケーションサーバーの間で問題が起きている場合などに発生します。

502 Bad Gateway

サーバー構成やインフラ側の問題として出ることがあります。

503 Service Unavailable

503 Service Unavailableは、サービスが一時的に利用できない場合に返ります。

サーバーの過負荷、メンテナンス、アプリケーション停止などで発生します。

503 Service Unavailable

WordPressでメンテナンス中に表示されることもあります。

504 Gateway Timeout

504 Gateway Timeoutは、ゲートウェイやプロキシが時間内に応答を受け取れなかった場合に返ります。

処理に時間がかかりすぎている場合や、バックエンド側から応答が返らない場合に発生します。

504 Gateway Timeout

APIでよく使うHTTPステータスコード

APIでは、処理結果に合わせてHTTPステータスコードを使い分けます。

たとえば、投稿データを扱うAPIなら次のようになります。

処理HTTPメソッドステータスコード
投稿一覧を取得するGET /api/posts200 OK
投稿を新規作成するPOST /api/posts201 Created
投稿を更新するPUT /api/posts/1200 OK または 204 No Content
投稿を削除するDELETE /api/posts/1204 No Content
存在しない投稿を取得するGET /api/posts/9999404 Not Found
未ログインでアクセスするGET /api/profile401 Unauthorized
権限がない操作をするDELETE /api/posts/1403 Forbidden

APIを作る場合は、処理内容に合ったステータスコードを返すと、フロントエンド側で結果を判定しやすくなります。

JavaScriptのfetchでステータスコードを確認する

JavaScriptでAPIを呼び出す場合、fetchのレスポンスからステータスコードを確認できます。

async function getPosts() {
  const response = await fetch("/api/posts");

  console.log(response.status);

  const posts = await response.json();

  console.log(posts);
}

getPosts();

response.statusには、200404などの数字が入ります。

response.okを使うと、成功したレスポンスかどうかを判定できます。

async function getPosts() {
  const response = await fetch("/api/posts");

  if (!response.ok) {
    console.log("エラーが発生しました");
    console.log(response.status);
    return;
  }

  const posts = await response.json();

  console.log(posts);
}

getPosts();

response.okは、ステータスコードが200から299の範囲ならtrueになります。

Chrome開発者ツールで確認する方法

ブラウザでもHTTPステータスコードを確認できます。

Google Chromeの場合は、開発者ツールのNetworkタブを使います。

  1. 確認したいページを開く
  2. 右クリックして「検証」をクリックする
  3. 「Network」タブを開く
  4. ページを再読み込みする
  5. 一覧から確認したいリクエストをクリックする
  6. Status Codeを確認する

HTML、CSS、JavaScript、画像、API通信など、それぞれのリクエストに対してステータスコードが表示されます。

ページが表示されない場合や、API通信が失敗している場合は、まずNetworkタブを見ると原因を探しやすくなります。

WordPressでよく見るステータスコード

WordPressサイトを運営していると、次のステータスコードを見ることがあります。

コードよくある場面
200記事や固定ページが正常に表示されている
301URL変更やhttpからhttpsへの転送
404削除した記事、リンク切れ、存在しないURL
500テーマ、プラグイン、PHP、設定ファイルのエラー
503メンテナンス中、サーバー過負荷、一時的な停止

記事URLを変更した場合、古いURLをそのまま放置すると404になります。

古いURLから新しいURLへ移動させたい場合は、301リダイレクトを設定します。

よく使うHTTPステータスコード一覧

Web制作やAPI開発でよく使うステータスコードをまとめます。

コード名前意味
200OK成功
201Created新規作成された
204No Content成功したが返す本文がない
301Moved Permanently恒久的なリダイレクト
302Found一時的なリダイレクト
304Not Modified変更なし
400Bad Requestリクエストが不正
401Unauthorized認証が必要
403Forbidden権限がない
404Not Found見つからない
405Method Not Allowed許可されていないHTTPメソッド
429Too Many Requestsリクエストが多すぎる
500Internal Server Errorサーバー内部エラー
502Bad Gatewayゲートウェイで問題が起きた
503Service Unavailable一時的に利用できない
504Gateway Timeout応答が時間切れになった

まとめ

HTTPステータスコードは、サーバーがリクエストに対して返す処理結果の数字です。

先頭の数字によって、大きく意味が分かれます。

分類意味
100番台処理を継続している
200番台成功
300番台リダイレクト
400番台クライアント側のエラー
500番台サーバー側のエラー

まず覚えたいステータスコードは、次の通りです。

  • 200 OK:成功
  • 201 Created:新規作成
  • 204 No Content:成功したが返す本文なし
  • 301 Moved Permanently:恒久的なリダイレクト
  • 302 Found:一時的なリダイレクト
  • 400 Bad Request:リクエストが不正
  • 401 Unauthorized:認証が必要
  • 403 Forbidden:権限がない
  • 404 Not Found:見つからない
  • 500 Internal Server Error:サーバー内部エラー
  • 503 Service Unavailable:一時的に利用できない

Webページが表示されないとき、API通信が失敗したとき、WordPressでエラーが出たときは、HTTPステータスコードを確認すると原因を探しやすくなります。

Chromeの開発者ツールでは、Networkタブから各リクエストのステータスコードを確認できます。

タイトルとURLをコピーしました