HTTPとは?種類などをわかりやすく解説

HTTP(HyperText Transfer Protocol)とは、WebブラウザとWebサーバの間でWeb情報をやり取りするためのプロトコルである。




HTTPの概要

HTTPは、Webページの表示や操作、ファイルダウンロードなど、WebブラウザとWebサーバ間の通信を行うための通信規則である。WebブラウザからWebサーバに対してリクエスト(要求)を送り、Webサーバからリクエストに応じたレスポンス(応答)を受け取ることによって、WebブラウザはWebページを表示したり、ファイルダウンロードを行ったりすることができる。

HTTPは、リクエストとレスポンスの2つの要素から構成される。

リクエストとは、WebブラウザからWebサーバに対して送信される要求である。リクエストには、リクエストの種類やリクエストの対象、リクエストの条件などに関する情報が含まれる。

レスポンスとは、WebサーバからWebブラウザに対して送信される応答である。レスポンスには、リクエストの処理結果や、リクエストに応じたデータなどに関する情報が含まれる。

HTTPリクエストの構成

HTTPリクエストは、以下の3つの要素で構成される。

  • リクエスト行
  • ヘッダーフィールド
  • ボディ

リクエスト行

リクエスト行は、リクエストの種類、リソースのURL、HTTPバージョンを示す。

リクエストの種類には、以下のようなものがある。

  • GET:リソースを取得する
  • POST:リソースを送信する
  • PUT:リソースを更新する
  • DELETE:リソースを削除する

ヘッダーフィールド

ヘッダーフィールドは、リクエストに関する追加情報を示す。

ヘッダーフィールドには、以下のようなものがある。

ボディ

ボディは、リクエストに付随するデータである。

ボディには、以下のようなものがある。

  • フォームデータ
  • 画像データ
  • テキストデータ

HTTPリクエストの種類

HTTPリクエストは、クライアントからサーバーへ送信されるメッセージであり、主に以下の種類に分類される。

1. GET

リソースの取得をリクエストする。最も一般的なリクエストメソッドであり、ブラウザでWebページを表示する際に使用される。

2. POST

リソースの作成や更新をリクエストする。フォームデータなどのデータをサーバーへ送信する際に使用される。

3. PUT

リソースの更新をリクエストする。指定されたリソースを、送信されたデータで完全に置き換える。

4. PATCH

リソースの部分的な更新をリクエストする。PUT と異なり、リソース全体を置き換えるのではなく、一部のみを更新する。

5. DELETE

リソースの削除をリクエストする。

6. HEAD

リソースのヘッダー情報のみを取得する。リソース本体を取得せずに、ヘッダー情報のみを確認したい場合に使用する。

7. OPTIONS

サーバーがサポートしているリクエストメソッドを問い合わせる。

8. TRACE

リクエストメッセージ処理の過程をサーバーに追跡させる。

9. CONNECT

クライアントとサーバー間でトンネルを確立する。HTTPS などの暗号化通信を使用する際に使用される。

上記以外にも、いくつかの拡張リクエストメソッドが存在する。

HTTPレスポンスの構成

HTTPレスポンスについてもHTTPリクエストと同様、以下の3つの要素で構成される。

  • ステータス行
  • ヘッダーフィールド
  • ボディ

ステータス行

ステータス行は、HTTPリクエストに対する応答を示す。ステータスコードは、HTTPリクエストが成功したか失敗したかを示す3桁の数字からなるコードである。

ステータスコードには、以下のようなものがある。

  • 200 OK:リクエストが成功
  • 400 Bad Request:リクエストが不正
  • 500 Internal Server Error:サーバエラー

ヘッダーフィールド

ヘッダーフィールドは、HTTPリクエストの応答に関する追加情報を示す。ヘッダーフィールドには、以下のようなものがある。

  • Content-Type:ボディのコンテンツの種類
  • Content-Length:ボディの長さ
  • Content-Encoding:ボディのエンコード形式

ボディ

ボディは、HTTPリクエストに対する応答のデータである。ボディには、以下のようなものがある。

  • テキストデータ
  • 画像データ
  • 音声データ
  • 動画データ

HTTPレスポンスの種類

HTTPレスポンスは、主に以下の種類に分類される。

1xx: 情報

  • 100 Continue: クライアントはリクエストを続行してもよいことを示す。
  • 101 Switching Protocols: サーバーがリクエストされたプロトコルに切り替えることを示す。
  • 102 Processing: サーバーがリクエストを処理中であることを示す。
  • 103 Early Hints: サーバーがリクエストの処理に関するヒントを提供する。

2xx: 成功

  • 200 OK: リクエストが成功したことを示す。
  • 201 Created: リクエストが作成されたことを示す。
  • 202 Accepted: リクエストが受け入れられ、処理が開始されたことを示す。
  • 203 Non-Authoritative Information: レスポンスがキャッシュされた情報であることを示す。
  • 204 No Content: リクエストは成功したが、コンテンツは送信されないことを示す。
  • 205 Reset Content: クライアントはリクエストをリセットすべきことを示す。
  • 206 Partial Content: リクエストされたコンテンツの一部のみが送信されることを示す。

3xx: リダイレクト

  • 300 Multiple Choices: 複数の選択肢があることを示す。
  • 301 Moved Permanently: リソースが永久的に移動したことを示す。
  • 302 Found: リソースが一時的に移動したことを示す。
  • 303 See Other: 別のURIを参照すべきことを示す。
  • 304 Not Modified: リソースが変更されていないことを示す。
  • 305 Use Proxy: プロキシを使用すべきことを示す。
  • 306 Switch Proxy: 別のプロキシを使用すべきことを示す。
  • 307 Temporary Redirect: リソースが一時的に別のURIに移動したことを示す。

4xx: クライアントエラー

  • 400 Bad Request: リクエストが不正であることを示す。
  • 401 Unauthorized: 認証が必要であることを示す。
  • 402 Payment Required: 支払いが必要であることを示す。
  • 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 Request Entity Too Large: リクエストエンティティが大きすぎることを示す。
  • 414 Request-URI Too Long: Request-URIが長すぎることを示す。
  • 415 Unsupported Media Type:ポートされていないメディアタイプであることを示す。
  • 416 Requested Range Not Satisfiable: リクエストされた範囲が利用できないことを示す。
  • 417 Expectation Failed: 期待された処理が実行できないことを示す。
  • 418 I’m a teapot: 418ステータスコードは、HTCPCP-TEAポットの通信プロトコルに関するRFC 2324 で定義されたジョークである。

5xx: サーバーエラー

  • 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: サーバーがバリアントネゴシエーションをサポートしていることを示す。
  • 507 Insufficient Storage: サーバーに十分なディスク容量がないことを示す。
  • 508 Loop Detected: リクエストが無限ループに陥っていることを示す。
  • 510 Not Extended: サーバーが拡張機能をサポートしていないことを示す。
  • 511 Network Authentication Required: ネットワーク認証が必要であることを示す。

HTTPの暗号化

HTTP通信は、デフォルトでは暗号化されていないため、通信内容を盗聴されたり改ざんされたりするリスクがある。そこで、HTTP通信を暗号化するために、HTTPSと呼ばれるプロトコルが使用される。

HTTPSでは、通信内容が暗号化されているため、盗聴や改ざんのリスクを防止できる。
HTTPSは、以下のような場合に利用される。

  • ログイン画面: ユーザーIDやパスワードなどの重要な情報を入力する画面。
  • クレジットカード情報入力画面: クレジットカード番号などの機密情報を入力する画面。
  • オンラインバンキング: 銀行口座へのログイン、振り込み、口座情報の閲覧など。
  • 電子商取引: 商品購入、クレジットカード情報の入力など。

まとめ

HTTPは、WebブラウザとWebサーバの間でWeb情報をやり取りするためのプロトコルである。

HTTP リクエストには様々な種類があり、それぞれ異なる目的で使用される。適切なリクエストメソッドを選択することで、効率的な通信が可能となる。

また、HTTPSは、HTTPの通信内容を暗号化するプロトコルである。いずれのプロトコルも、Webページの利用が拡大していくにつれて、HTTPの重要性はますます高まっていくと考えられる。

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