HTTP

HTTPステータスコードとは?意味と確認方法をわかりやすく解説

勉強結構好き マン
勉強結構好き マン

こんな悩みを解決できます!

営業職から会社員WEBエンジニア、
その後フリーランスWEBエンジニアに転向した自分が解説します。

この記事ではステータスコードとは何か、ステータスコードの意味をわかりやすく解説します。

この記事を読めば、ステータスコードを見るだけでインターネット通信の状況を読み取ることができるようになります!

ステータスコードとは?

一言で言うと、ステータスコードとはインターネット通信が成功したか、失敗したかどうかを表す3桁の数字です。

ステータスコードの説明をする前に、その大元であるHTTPについて簡単に説明します。

HTTP(HyperText Transfer Protocol)

ステータスコードはHTTPの一要素です。

英語と日本語の会話では意味が通じないように、インターネット通信も共通のルールに基づいて行う必要があります。

そのため「インターネット通信のルール」としてHTTPが定められています。

ステータスコードもHTTPの中で定められているルールの1つです。

今現在、HTTPはWebサイトの閲覧やWebアプリケーションの利用には必ずと言っていいほど使われています。

URLの先頭につく「http://」や「https://」は「HTTPを使って通信を行いますよ」という宣言です。

クライアントとサーバー

ステータスコードを理解する上で重要な要素としてクライアントサーバーがあります。

HTTPでは、スマホやPCなどのインターネットを利用する側であるクライアントと、Webページやアプリケーションなどのソースコードやデータを持ち、クライアントに提供するサーバーの2者間で通信が行われます。

クライアントは「◯◯のページが見たいです」などのリクエスト(要求)をサーバーに送ります。

サーバーはそれを受けて「これが◯◯のページです」というレスポンス(応答)を返すことで、クライアントはWebページを閲覧することができます。

クライアントとサーバー

サーバーからのレスポンスに含まれるHTMLファイルや画像ファイルなどのことをリソースと呼びます。

ですが、何かしらの異常が発生して通信がうまくいかないことは往々にしてあります。

そんな時にサーバーから何も返事が返ってこないとクライアント側は困ってしまいますよね?

そのため、通信が成功か失敗かをクライアント側に伝えるための情報が必要です。

この、クライアントに通信結果を伝えるための情報 = ステータスコードです。

HTTPについて詳しく知りたい方はこちらの記事をおすすめします。

こちらの記事は現在準備中です。

ステータスコードの確認方法

ステータスコードは誰でも確認することができます。

この記事ではChromeのデベロッパーツールを使った方法を紹介します。

  1. F12orCtrl + Shift + i(Windowsの場合)orCmd + Option + I(Macの場合)を押してデベロッパーツールを開く


  2. 「Network」を選択


  3. 対象URLの「Status」欄を確認
    赤枠で囲まれている「200」やその下の「204」といった数字がステータスコードになります。
    この例ではページが問題なく表示されているので通信成功を表す「200」が表示されています。
    ※何も表示されていない場合はページを更新してみてください

ステータスコードの意味

ステータスコードは3桁の数字で、先頭の数字によって以下の5つに分類されています。

そのため先頭の数字を見れば通信が成功したか失敗したかを判断することができます。

  1. 1xx : 処理中
  2. 2xx : 成功
  3. 3xx : リダイレクト
  4. 4xx : クライアントエラー
  5. 5xx : サーバーエラー

この後各ステータスコードの意味を説明していきます。

1つ1つのステータスコードの意味を覚える必要はありません。
知らないステータスコードが出てきたらその都度調べるぐらいの気持ちで大丈夫です。

100番台 - 処理中

100番台 - 処理中

100番台は処理が継続していることを表します。

クライアントはそのまま処理を継続する、また追加の情報を付け加えてサーバーに再送信するといったアクションを行います。

我々が見かけることはあまりありません。

HTTPステータスコード説明
100 Continueリクエスト継続可能
101 Switching Protocolsプロトコル切り替え
102 Processing処理中
103 Early Hintsヘッダの事前送信

200番台 - 成功

200番台 - �成功

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

HTTPステータスコード説明
200 OKリクエスト成功
201 Createdリクエスト成功後に新たなリソースを作成
202 Acceptedリクエストは受理されたがまだ実行されていない
203 Non-Authoritative Informationリクエストは成功したが信用が低いリソースが返却された
204 No Contentリクエストは成功したが返却するリソースが無い
205 Reset Contentクライアントに対しリクエストを送信したドキュメントをリセットするよう指示
206 Partial ContentクライアントがRangeヘッダーを送信した時のみ

300番台 - リダイレクト

300番台 - リダイレクト

300番台は他のリソースへのリダイレクトを表します。

具体的には、アクセスしたURLに目当てのページがもう存在せず、別のURLに飛ばされる時などに返却されます。

HTTPステータスコード説明
300 Multiple Choicesリクエストに対して複数のレスポンスがあることを示す
301 Moved PermanentlyリソースのURIが永遠に変更されたことを示す
302 Foundリソースの URI が一時的に変更されたことを示す
303 See Other別のURIをGETメソッドで参照するようクライアントに指示
304 Not Modifiedリソースが更新されていないことを示す
307 Temporary Redirect別のURIを始めのリクエストと同じメソッドで参照するようクライアントに指示
308 Permanent RedirectリソースのURIが永遠に変更されたことを示し、変更先のURIにリクエストを送る場合は始めのリクエストと同じメソッドで参照するようクライアントに指示

400番台 - クライアントエラー

400番台 - クライアントエラー

400番台はクライアントエラーを表します。

通信エラーが起こったけど悪いのはクライアント側だよ、ということを意味します。

具体的には存在しないページにアクセスしようとする、不正な値を送信する、認証が必要なリソースを認証なしで取得しようとした時などに発生します。

HTTPステータスコード説明
400 Bad Requestクライアントエラーのせいでサーバーがリクエストを処理できない、もしくは処理しない
401 Unauthorized認証を必要としているが未認証
403 Forbiddenクライアントにコンテンツのアクセス権がない
404 Not Foundサーバーがリクエストされたリソースを発見できない
405 Method Not Allowedサーバーが禁止しているメソッドである
406 Not Acceptableクライアントから与えられた条件に合うコンテンツが見つからない
407 Proxy Authentication Requiredプロキシサーバーが認証を必要としているが未認証
408 Request Timeoutリクエスト処理時間切れ
409 Conflictリクエストがサーバーの現在の状態と矛盾する
410 Goneリクエストされたコンテンツがサーバーから永久に削除された
411 Length RequiredサーバーがContent-Lengthヘッダーフィールドを要求しているが、リクエストに付与されていない
412 Precondition Failedサーバー側で適合しない前提条件がクライアント側のヘッダーに含まれている
413 Payload Too Largeリクエストの本体がサーバーで定めている上限を超えている
414 URI Too Longリクエストした URI がサーバーで扱える長さを超えている
415 Unsupported Media Typeリクエストされたデータのメディア形式をサーバーが対応していない
416 Range Not Satisfiableリクエスト内の Range ヘッダーフィールドで指定された範囲を満たすことができない
417 Expectation FailedExpect リクエストヘッダーで指定された内容がサーバー側と適合しない
418 I'm a teapotコーヒーポットではなくやかんにリクエストを送った
※このステータスコードはおふざけで作られました
421 Misdirected Requestリクエストがレスポンスを生成できないサーバーに送られた
425 Too Early繰り返される可能性のあるリクエストを処理するリスクを拒否
426 Upgrade Requiredリクエスト処理するためにアップグレードが必要
428 Precondition Requiredリクエストが条件付きになることが必要
429 Too Many Requests一定の時間内に大量のリクエストを送信した
431 Request Header Fields Too Largeヘッダーフィールドが大きすぎる
451 Unavailable For Legal Reasons政府によって検閲されたウェブページなどの違法なリソースをリクエスト

500番台 - サーバーエラー

500番台 - サーバーエラー

500番台はサーバーエラーを表します。

400番台の場合はクライアント側に原因がありますが、500番台の場合はサーバー側に原因があります。

そのためWebサイト閲覧時に500番台のエラーが出た場合は、クライアント側からどうにかしてページを見れるようにするといったことは基本的に不可能です。

HTTPステータスコード説明
500 Internal Server Errorサーバー側で処理方法がわからない事態が発生
501 Not Implementedリクエストメソッドをサーバーが対応しておらず扱えない
502 Bad Gatewayゲートウェイとして動作するサーバーが無効なレスポンスを受け取った
503 Service Unavailableリクエストを処理する準備ができていない
504 Gateway Timeoutゲートウェイとして動作するサーバーが時間内にレスポンスを得られない
505 HTTP Version Not Supportedリクエストで使用した HTTP のバージョンにサーバーが対応していない
506 Variant Also Negotiatesサーバーに内部構成エラーがある
510 Not Extendedリクエスト拡張が必要
511 Network Authentication Requiredクライアントがネットワークでアクセスするために認証が必要

【参考】https://developer.mozilla.org/ja/docs/Web/HTTP/Status

まとめ

この記事でステータスコードとは何か、ステータスコードが表す意味が理解できれば嬉しいです。

最後にもう一度ポイントをまとめておきます。

  • ステータスコードとはインターネット通信の結果を表す3桁の数字
  • ステータスコードはHTTPの中で定められている
  • ステータスコードの先頭の数字で大まかな結果がわかる

ステータスコードについてもっと詳しく知りたい、HTTPを勉強したいという方向けにおすすめの教材を紹介します。

Webを支える技術 -HTTP、URI、HTML、そしてREST

こちらの本は正直初心者にとってはやや難しい内容もあります。

ですがHTTPやステータスコードについて非常に詳しく書かれているため、当ブログなどで簡単に理解した後にさらに理解を深めるための教材として活用してみてください!

  • この記事を書いた人

勉強結構好きマン

『"わからない"を"だいたいわかる"に変える』 をテーマにテクノロジーに関するややこしい知識について解説しています。【経歴】営業職→会社員WEBエンジニア→フリーランスWEBエンジニア【資格】TOEIC L&R 930点

-HTTP