🔖

HTTP レスポンスステータスコードについて

2023/05/05に公開

HTTP レスポンスステータスコード

HTTPリクエストに対するサーバーの応答を表す3桁の数字のコード。
HTTPステータスコードは、WebサーバーからのHTTPレスポンスの一部で、Webブラウザーに送信される。
ステータスコードは、Webブラウザーに返されたレスポンスの種類を示し、
Web開発者が問題を特定するのに役立ちます。

HTTPレスポンスの中身

このレスポンスの中身は、リクエストを処理したWebサーバーがWebブラウザに送信するデータです。
レスポンスには、以下の情報が含まれます。

1. ステータスライン:

  • webブラウザにwebサーバー内での処理の結果を教える。
  • HTTPステータスコード、ステータスメッセージを含む。

2. レスポンスヘッダー:

  • レスポンスに関するメタデータを含む。例えば、レスポンスの種類やサーバーの情報など。
レスポンスヘッダーとメッセージヘッダー

レスポンスヘッダーとメッセージヘッダーの違い

  • メッセージヘッダー:
    HTTPリクエストやレスポンスのメッセージの中で、メッセージ本文(ボディ)の前に送信されるメタデータのことを指す。リクエストヘッダーやレスポンスヘッダーを含む、全てのヘッダー情報が含まれます。

  • レスポンスヘッダー:
    HTTPレスポンスに含まれるメッセージヘッダーのうち、サーバーがクライアントに対して返すヘッダーのことを指す。
    レスポンスヘッダーには、レスポンスの状態やエンコーディング方式、リダイレクト先URLなどが含まれます。

レスポンスヘッダーはメッセージヘッダーの一部であり、HTTPレスポンスに特有のもの。

ここについてはまた詳しく書きたいと思いますが、大枠を載せます!

【メッセージヘッダーの役割】

メッセージヘッダーには、以下のような役割がある。

  • クライアントやサーバーの情報の交換
  • リクエストやレスポンスの種類や内容の指定
  • セッションの制御

HTTPプロトコルでは、メッセージヘッダーに含まれる情報が処理されることで、
クライアントとサーバーの間でのスムーズな通信が行われる。

代表的なメッセージヘッダー
ヘッダー名 役割 ヘッダーの種類
Cache-Control キャッシュの制御 一般的なヘッダー
Connection コネクションの制御 一般的なヘッダー
Date メッセージの作成日時 一般的なヘッダー
MIME-Version MIMEバージョンの指定 一般的なヘッダー
Trailer メッセージボディの終端に続くヘッダーの種類を示す 一般的なヘッダー
リクエストヘッダー
ヘッダー名 役割 ヘッダーの種類
Accept リクエストされるリソースのMIMEタイプの指定 リクエストヘッダー
Accept-Encoding リクエストされるリソースのエンコーディング方式の指定 リクエストヘッダー
Authorization リクエストの認証情報 リクエストヘッダー
Cookie クライアントがサーバーに送信するクッキー情報 リクエストヘッダー
Host リクエストされるホスト名 リクエストヘッダー
User-Agent クライアントの情報 リクエストヘッダー
レスポンスヘッダー
ヘッダー名 役割 ヘッダーの種類
Content-Length レスポンスのボディのサイズ レスポンスヘッダー
Content-Type レスポンスのMIMEタイプの指定 レスポンスヘッダー
Location リダイレクト先のURL レスポンスヘッダー
Server サーバーの種類やバージョン情報 レスポンスヘッダー

3. レスポンスボディ(メッセージボディ):

  • Webサーバーから送信された任意のデータ。
    HTML、CSS、JavaScript、画像、動画などが含まれることがある。
補足:httpバージョンについて

HTTPは、そのバージョンによって機能や動作が異なります。
ここでは、HTTPのバージョンについてまとめます。

【HTTP/0.9】

最初のHTTPバージョンであり、1991年にリリースされました。
HTTP/0.9は、単純なGETメソッドを使用し、HTML文書のみを転送することができました。
HTTPヘッダーやステータスコードは存在しません。

【HTTP/1.0】

1996年にリリースされたHTTPの改訂版で、多くの新機能が追加されました。
HTTP/1.0はバイナリデータを転送することができ、
HTTPヘッダーやステータスコードが追加された。
また、新しいHTTPメソッドやキャッシュ制御機能も追加されました。

【HTTP/1.1】  ★

1999年にリリースされ、現在でも最も広く使用されているHTTPバージョンです。
HTTP/1.1は、持続的接続、パイプライン処理、圧縮転送、仮想ホストなどの新機能が追加された。
また、セキュリティのためにTLS/SSLによる暗号化がサポートされました。

【HTTP/2】

2015年にリリースされたHTTPの最新バージョンで、多くの改善が加えられました。
HTTP/2は、複数のリクエストとレスポンスを同時に処理し、ヘッダーの圧縮、サーバーからのプッシュ、
優先度制御などの新機能が追加されました。

【HTTP/3】

2020年にリリースされたHTTPの最新バージョンで、HTTP/2を基礎としていますが、
新しい転送プロトコルであるQUICを採用しています。
HTTP/3は、遅延の少ない接続、高いセキュリティ、高い信頼性を提供することが期待されています。

一般的なHTTPステータスコード

  1. 情報レスポンス (100–199)
  2. 成功レスポンス (200–299)
  3. リダイレクトメッセージ (300–399)
  4. クライアントエラーレスポンス (400–499)
  5. サーバーエラーレスポンス (500–599)

これらのレスポンスは、大枠として以下の3つに分類することができます。

1. インフォメーションレスポンス (1xx)
クライアントのリクエストが受け付けられたことを示す情報を含むレスポンス。
これらのレスポンスは、クライアントのリクエストが処理中であることを通知し、
その処理が続行されることを示します。

2. サクセスレスポンス (2xx)
クライアントのリクエストが成功したことを示すレスポンス。
これらのレスポンスは、クライアントが要求したデータが正常に返されたことを示します。

3. エラーレスポンス (3xx, 4xx, 5xx)
クライアントのリクエストがエラーであることを示すレスポンス。
これらのレスポンスは、クライアントが要求したデータが存在しない、アクセスが許可されていない、またはサーバー側で問題が発生したことを示します。
これらのレスポンスは、エラーの原因を特定するのに役立ちます。

では詳しく見ていきましょう。

1xx 情報レスポンス: クライアントのリクエストが受信されたことを示す。

  • 処理が継続していることを示す。
ステータスコード 種類 説明
100 Continue リクエストを継続できることを示す。
101 Switching Protocols サーバーがプロトコルを切り替えてリクエストを処理していることを示す。

2xx 成功レスポンス: クライアントのリクエストが成功したことを示す。

  • 成功時に返すステータスコードとして最も多用される
  • 成功が意味することは、 HTTP メソッドにより異なります。
    • GET: リソースが読み込まれ、メッセージ本文で転送された。
    • HEAD: メッセージ本文がなく、表現ヘッダーがレスポンスに含まれている。
    • PUT または POST: 操作の結果を表すリソースがメッセージ本文で送信される。
    • TRACE: メッセージ本文に、サーバーが受け取ったリクエストメッセージが含まれている。
ステータスコード 種類 説明
200 OK リクエストが成功したことを示す。
201 Created 新しいリソースが作成されたことを示す。
204 No Content レスポンスにコンテンツがないことを示す。

3xxリダイレクトレスポンス: クライアントが追加のアクションを実行する必要があることを示す。

ステータスコード 種類 説明
301 Moved Permanently リクエストされたリソースが移動したことを示す。
302 Found リクエストされたリソースが一時的に移動したことを示す。
304 Not Modified クライアントが最新のコンテンツを保持しているため、サーバーは更新されたコンテンツを返さないことを示す。

4xxクライアントエラーレスポンス: クライアントが間違ったリクエストを送信したことを示す。

ステータスコード 種類 説明
400 Bad Request リクエストが不正であることを示す。
401 Unauthorized 認証が必要であることを示す。
404 Not Found リクエストされたリソースが存在しないことを示す。

5xxサーバーエラーレスポンス: サーバーがリクエストを処理できなかったことを示す。

ステータスコード 種類 説明
500 Internal Server Error サーバーが何らかのエラーでリクエストを処理できないことを示す。
502 Bad Gateway サーバーがリクエストを処理するためのアップストリームサーバーから不正なレスポンスを受け取った
まとめ一覧表
  1. 情報レスポンス (100–199)
  2. 成功レスポンス (200–299)
  3. リダイレクトメッセージ (300–399)
  4. クライアントエラーレスポンス (400–499)
  5. サーバーエラーレスポンス (500–599)
ステータスコード 種類 説明
1xx 情報レスポンス クライアントのリクエストが受信されたことを示す。
100 Continue リクエストを継続できることを示す。
101 Switching Protocols サーバーがプロトコルを切り替えてリクエストを処理していることを示す。
2xx 成功レスポンス クライアントのリクエストが成功したことを示す。
200 OK リクエストが成功したことを示す。
201 Created 新しいリソースが作成されたことを示す。
204 No Content レスポンスにコンテンツがないことを示す。
3xx リダイレクトレスポンス クライアントが追加のアクションを実行する必要があることを示す。
301 Moved Permanently リクエストされたリソースが移動したことを示す。
302 Found リクエストされたリソースが一時的に移動したことを示す。
304 Not Modified クライアントが最新のコンテンツを保持しているため、サーバーは更新されたコンテンツを返さないことを示す。
4xx クライアントエラーレスポンス クライアントが間違ったリクエストを送信したことを示す。
400 Bad Request リクエストが不正であることを示す。
401 Unauthorized 認証が必要であることを示す。
404 Not Found リクエストされたリソースが存在しないことを示す。
5xx サーバーエラーレスポンス サーバーがリクエストを処理できなかったことを示す。
500 Internal Server Error サーバーが何らかのエラーでリクエストを処理できないことを示す。
502 Bad Gateway サーバーがリクエストを処理するためのアップストリームサーバーから不正なレスポンスを受け取った

参考

Discussion