コンピューターサイエンス:アルゴリズム / OS / ネットワーク / DB

HTTP の基本

生田 陸人
LuaGate エンジニア / 現役エンジニア
編集 LuaGate編集部

HTTP の基本

このレッスンで分かること

  • HTTP はクライアントのリクエストとサーバーのレスポンスからなるシンプルなリクエスト/レスポンス型プロトコルです
  • リクエスト = メソッド + URL + ヘッダー + ボディ、レスポンス = ステータスコード + ヘッダー + ボディ の構造
  • ステートレス性のおかげで、Web サーバーを横方向にスケールアウトしやすい設計が可能

HTTP の基本 とは

HTTP リクエストとレスポンスの構造、ステータスコードを理解します。本レッスンでは、HTTP の基本 の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。

HTTP ステータスコード 分類 + 主要例

範囲意味よく出る具体例
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, 403 Forbidden, 404 Not Found, 429 Too Many Requests
5xxサーバーエラー500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable, 504 Gateway Timeout

401 と 403 の決定的な違い: 401 = 認証 (誰か) が通っていない、403 = 認証は OK だが権限 (何をできるか) がない。

このレッスンで学ぶこと

Web を支えるアプリケーション層プロトコル HTTP の基本構造、リクエスト / レスポンスの中身、主要なステータスコードを学びます。

HTTP とは

HTTP (HyperText Transfer Protocol) は、Web ブラウザとサーバーがやりとりするためのプロトコルです。クライアントがリクエストを送り、サーバーがレスポンスを返す「リクエスト/レスポンス型」の単純な仕組みです。

歴史的には HTTP/0.9 → 1.0 → 1.1 → 2 → 3 と進化しており、現在は HTTP/1.1 と HTTP/2 が主流、HTTP/3 が急速に普及中です。

リクエストの構造

HTTP リクエストは下記の 3 部構成です。

  1. リクエストライン — メソッド + パス + バージョン
  2. ヘッダー — メタ情報の Key-Value
  3. ボディ — 本文 (POST/PUT で使う)

プレーンテキスト

GET /articles/network HTTP/1.1 Host: noimancode.com User-Agent: Mozilla/5.0 ... Accept: text/html Cookie: session_id=abc123

GET の場合はボディが空です。POST でフォームを送るときはここに送信データが入ります。

レスポンスの構造

HTTP レスポンスも 3 部構成です。

  1. ステータスライン — バージョン + ステータスコード + 理由句
  2. ヘッダー — メタ情報
  3. ボディ — 本文 (HTML, JSON など)

プレーンテキスト

HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 Content-Length: 1234 Cache-Control: max-age=3600 <!DOCTYPE html> <html>...</html>

ステータスコードはレスポンスの結果を 3 桁の数字で表します。

ステータスコード

コード意味代表例
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, 403 Forbidden, 404 Not Found, 429 Too Many Requests
5xxサーバーエラー500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable, 504 Gateway Timeout

実務でよく出会うのは 200, 301, 302, 304, 400, 401, 403, 404, 500, 502, 503 あたり。それぞれが「何を意味するか」「どこのレイヤーで発生しがちか」を体に染み込ませておきましょう。

この章のポイント

401 と 403 の違い

  • 401 Unauthorized — 認証されていない (ログインしていない、トークン無効)
  • 403 Forbidden — 認証はされているが、権限がない (管理画面へのアクセス権限なし)

エラーレスポンスを正しく返さないと、フロントエンドが「ログイン画面に飛ばすべきか、エラー画面を出すべきか」を判断できなくなります。

主要なヘッダー

  • Host — どのドメインへのリクエストか。バーチャルホストで必須。
  • User-Agent — クライアント (ブラウザ) の種別。
  • Accept — クライアントが受け入れられる Content-Type。
  • Content-Type — ボディの形式 (application/json, text/html など)。
  • Authorization — 認証情報 (Bearer トークンなど)。
  • Cookie / Set-Cookie — Cookie のやりとり。
  • Cache-Control — キャッシュ制御。

ステートレス性

HTTP は基本的にステートレス、つまり「リクエスト 1 つ 1 つを独立に扱う」プロトコルです。サーバー側はリクエスト間で状態を覚えていません。

しかし実際の Web ではログイン状態などを保持する必要があり、Cookie やトークンをクライアント側に保存して毎回送る、という方法でステートを擬似的に再現しています。

この章のポイント

ステートレスのメリット

ステートレスだからこそ、サーバーを横方向にスケールアウトしやすい (どのサーバーがリクエストを処理してもよい)。セッション情報を共有 KV / DB に置き、Web サーバーは状態を持たない「Stateless サーバー」として設計するのが現代の主流です。

まとめ

このレッスンの要点は、リクエスト/レスポンスの構造 / ステータスコード 5 分類 / ステートレスとスケール の 3 点です。実務でこれらを切り分けて説明できるようになると、設計レビューや障害対応の精度が一段上がります。

理解度チェック

Q. HTTP 401 と 403 の違いを正しく説明しているのはどれ?

  1. 401 はサーバー側の障害、403 はクライアント側の障害
  2. 401 は認証されていない、403 は認証は通ったが権限がない
  3. 401 はリダイレクト、403 は失敗
  4. 両者は同義で互換性のために両方存在する
答えを見る

正解は 2。401 Unauthorized = 認証 (誰か) ができていない (= ログイン画面に飛ばす)、403 Forbidden = 認証はできているが権限 (何をできるか) がない (= エラー画面)、と使い分けます。

出典 (References)

最終更新: 2026-05-28

関連レッスン

よくある質問

Q. GET と POST はどう使い分けますか?

A. 「取得して副作用がない」なら GET、「作成・更新など状態を変える」なら POST が原則です。GET は URL にパラメータが入りキャッシュも効きますが、POST はボディに乗せられ大きなデータも送れます。冪等性も GET は持ち、POST は持たないという違いがあります。

Q. ステータスコードは何を返すべき?

A. 成功は 2xx、リダイレクトは 3xx、クライアントエラーは 4xx、サーバーエラーは 5xx が大原則です。新規作成は 201、認証失敗は 401、権限不足は 403 を返すと REST 慣習に沿った設計になります。200 で全部返すのは避けてください。

Q. REST と GraphQL の違いは?

A. REST はリソース単位のエンドポイント、GraphQL は単一エンドポイントでクエリ言語を使って欲しいデータを指定します。フロントの要件が頻繁に変わるなら GraphQL、シンプルな CRUD なら REST がメンテしやすいことが多いです。

次のレッスン

次は HTTP メソッド で、HTTP リクエストとレスポンスの構造、ステータスコードを理解します を学びます。

事前確認 — 進む前に次の 3 つができることを確認しましょう。

  1. HTTP の基本 の要点を自分の言葉で説明できる
  2. このレッスンの最小コード (または操作手順) を見ずに書ける
  3. 練習問題やクイズで間違えた箇所を読み直して理解した

理解度チェック (30 秒)

Q. HTTP の基本 とは何か、1 文で説明してください。

この章のポイント

A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。

関連レッスン

復習ミニクイズ

HTTP ステータスコード 403 の意味として正しいものはどれですか