Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

今更ながら HTTP プロトコルについて改めて学習する

0
Posted at

はじめに

アプリケーションの開発では当たり前のように利用している HTTP (HyperText Transfer Protocol) ですが、改めて通信の流れや仕組みを整理してみました。

改訂履歴

  • 2026/07/22 : 初版公開。

本文

1. 概要

HTTP (HyperText Transfer Protocol) とは、Web ブラウザと Web サーバーがデータをやり取りするための通信プロトコルです。2026 年現在では HTTP/2 および HTTP/3 が広く利用されており、HTTP/1.1 も互換性のため引き続き利用されています。

バージョン 公開年 特徴
HTTP/1.1 1997 年 長年利用されている標準的な仕様。
HTTP/2 2015 年 多重化により通信を高速化。
HTTP/3 2022 年 UDP ベースの QUIC を採用し、さらに高速・高信頼化。

HTTP 自体はステートレス(状態を保持しない)なプロトコルであり、各リクエストは独立して処理されます。そのため、ログイン状態などを維持するためには Cookie やセッション、JWT などの仕組みが利用されます。

2. HTTP メッセージの構造

2-1. HTTP リクエスト

HTTP リクエストは、クライアントからサーバーへ送信される要求です。HTTP リクエストは、リクエストラインHTTP ヘッダーリクエストボディ の 3 つで構成されます。

HTTP/1.1 リクエスト (GET)
GET /index.html HTTP/1.1
Host: example.com
User-Agent: Chrome
Accept: text/html

1 行目はリクエストラインと呼ばれ、以下の情報で構成されます。

項目名 項目内容
リクエストメソッド GET・POST・PUT・PATCH・DELETE など
リクエストターゲット /index.html
HTTP バージョン HTTP/1.1

補足
HTTP/1.1 以前はテキスト形式のため、直接人間でも読むことができました。HTTP/2 および HTTP/3 はバイナリフレームとして送信されるため、人間には読めません。

しかし原理は変わらないため、以降も HTTP/1.1 でサンプルを書いていきます。

2 行目以降は HTTP ヘッダーです。ヘッダーには接続先やデータ形式、認証情報など、通信に必要となる様々な追加情報が含まれます。詳細は後の章で説明します。

リクエストメソッドが POST や PUT などの場合、さらにこの後ろにリクエストボディとして、送信するデータを付与します。例えば、ユーザー情報を登録する場合は、以下のような HTTP リクエストになります。

HTTP/1.1 リクエスト (POST)
POST /users HTTP/1.1
Host: example.com
Content-Type: application/json

{
  "name": "Taro",
  "age": 20
}

上記の例では HTTP ヘッダーの Content-Type で、送信するデータ形式が JSON であることを示し、その後ろのリクエストボディに登録するデータを記述しています。

2-2. HTTP レスポンス

HTTP レスポンスは、サーバーからクライアントへ返却される処理結果です。HTTP レスポンスは、ステータスラインHTTP ヘッダーレスポンスボディ の 3 つで構成されます。

HTTP/1.1 レスポンス
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 85

<!DOCTYPE html>
<html>
  <body>
    <h1>Hello, World!</h1>
  </body>
</html>

1 行目は ステータスライン と呼ばれ、以下の情報で構成されます。

項目名 項目内容
HTTP バージョン HTTP/1.1
ステータスコード 200・201・301・400・401・403・404・500 など
理由句 OK・404 Not Found など

2 行目以降は HTTP ヘッダーです。ヘッダーには返却するデータ形式やデータサイズ、キャッシュ制御など、レスポンスに関する様々な追加情報が含まれます。詳細は後の章で説明します。

空行の後ろにはレスポンスボディが続き、HTML や JSON、画像データなど、クライアントへ返却するデータが格納されます。上記の例では HTTP ヘッダーの Content-Type で返却するデータ形式が HTML であることを示し、レスポンスボディには Web ページの内容 (Hello, World!) が格納されています。

3. HTTPS

HTTPS (HyperText Transfer Protocol Secure) とは、HTTP に TLS (Transport Layer Security) による暗号化機能を追加した通信方式です。

HTTP は通信内容がそのまま送受信されるため、通信経路上で内容を盗み見られたり、改ざんされたりする可能性があります。一方、HTTPS では TLS によって通信内容が暗号化されるため、安全にデータを送受信できます。

HTTPS には主に次のような特徴があります。

  • 通信内容を暗号化し、盗聴を防止します。
  • 通信内容の改ざんを検知できます。
  • サーバー証明書により通信相手が正しいサーバーであることを確認できます。

2026 年現在では、ほとんどの Web サイトや Web API で HTTPS が利用されています。

4. HTTP の関連情報

4-1. HTTP ヘッダー

HTTP ヘッダーには通信に必要となる様々な追加情報が含まれています。よく見かけるヘッダーには次のようなものがあります。

ヘッダー 設定例 説明
Host example.com 接続先ホスト名
Content-Type application/json データ形式
Content-Length 1234 データサイズ (Byte)
Authorization Bearer eyJ... 認証情報
Cookie sessionid=abc123 Cookie 情報
Set-Cookie sessionid=abc123;
HttpOnly;
Secure;
SameSite=Lax
Cookie の設定
HttpOnly : JavaScript から Cookie の参照禁止 ※ XSS 対策
Secure : HTTPS でのみ Cookie 送信可能 ※ 盗聴対策
SameSite=Lax : 他サイトからの Cookie 送信制限 ※ CSRF 対策
Cache-Control max-age=3600 キャッシュ制御
Accept application/json 受け取れるデータ形式
User-Agent Mozilla/5.0 ... ブラウザなどクライアント情報
Content-Security-Policy default-src 'self' 読込元の制限 ※ XSS 対策
Strict-Transport-Security max-age=31536000 HTTPS の強制 (HSTS)
X-Content-Type-Options nosniff MIME タイプの推測防止 ※ XSS 対策

4-2. HTTP ステータスコード

HTTP ステータスコードは、HTTP レスポンスで返却される処理結果を表す 3 桁の数値です。ステータスコードを見ることで、リクエストが正常に処理されたのか、エラーが発生したのかを判断できます。

ステータスコードは先頭の数字によって次のように分類されます。

分類 概要
1xx 情報
2xx 成功
3xx リダイレクト
4xx クライアントエラー
5xx サーバーエラー

代表的なステータスコードは以下のとおりです。

ステータスコード 説明
200 OK リクエストが正常に処理された。
201 Created リソースの作成に成功した。
301 Moved Permanently リソースが恒久的に移動した。
400 Bad Request リクエストの内容が不正。
401 Unauthorized 認証に失敗。
403 Forbidden アクセス権限がない。
404 Not Found リソースが存在しない。
500 Internal Server Error サーバー内部でエラーが発生した。

5. 参考

おわりに

気付きがあれば、追記します。

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?