HTTP レスポンスステータスコードについて
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ステータスコード
- 情報レスポンス (100–199)
- 成功レスポンス (200–299)
- リダイレクトメッセージ (300–399)
- クライアントエラーレスポンス (400–499)
- サーバーエラーレスポンス (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 | サーバーがリクエストを処理するためのアップストリームサーバーから不正なレスポンスを受け取った |
まとめ一覧表
- 情報レスポンス (100–199)
- 成功レスポンス (200–299)
- リダイレクトメッセージ (300–399)
- クライアントエラーレスポンス (400–499)
- サーバーエラーレスポンス (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