コンピューターサイエンス:アルゴリズム / OS / ネットワーク / DB
HTTP の基本
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 部構成です。
- リクエストライン — メソッド + パス + バージョン
- ヘッダー — メタ情報の Key-Value
- ボディ — 本文 (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 部構成です。
- ステータスライン — バージョン + ステータスコード + 理由句
- ヘッダー — メタ情報
- ボディ — 本文 (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 の違いを正しく説明しているのはどれ?
- 401 はサーバー側の障害、403 はクライアント側の障害
- 401 は認証されていない、403 は認証は通ったが権限がない
- 401 はリダイレクト、403 は失敗
- 両者は同義で互換性のために両方存在する
答えを見る
正解は 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 つができることを確認しましょう。
- HTTP の基本 の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. HTTP の基本 とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン
復習ミニクイズ
HTTP ステータスコード 403 の意味として正しいものはどれですか