メインコンテンツまでスキップ

RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content

  • ステータス: Proposed Standard
  • 発行日: June 2014
  • ストリーム: IETF
  • 更新: RFC2817
  • 廃止: RFC2616
  • 廃止: RFC9110
  • エラッタ: エラッタなし

概要 (Abstract)​

Hypertext Transfer Protocol (HTTP) は、分散型・協調型のハイパーテキスト情報システムのためのステートレスなアプリケーション層プロトコルです。本文書は、リクエストメソッド、リクエストヘッダーフィールド、レスポンスステータスコード、レスポンスヘッダーフィールドによって表現されるHTTP/1.1メッセージのセマンティクス、メッセージのペイロード(メタデータとボディコンテンツ)、コンテンツネゴシエーションのメカニズムを定義します。


目次 (Table of Contents)​

コアセクション (Core Sections)​

附属書 (Appendices)​


Copyright (c) 2014 IETF Trust および文書著者として特定された者。全著作権所有。



主要機能 (Key Features)​

HTTPメソッドプロパティ (HTTP Method Properties)​

本文書は、HTTPメソッドの3つの中核的プロパティを定義します:

  1. 安全なメソッド (Safe Methods): サーバー状態を変更しない読み取り専用操作
  2. 冪等メソッド (Idempotent Methods): 複数の同一リクエストが単一リクエストと同じ効果を持つ
  3. キャッシュ可能メソッド (Cacheable Methods): レスポンスが保存および再利用可能

メソッド一覧 (Method Summary)​

メソッド安全冪等キャッシュ可能
GET✅✅✅
HEAD✅✅✅
POST❌❌⚠️
PUT❌✅❌
DELETE❌✅❌
CONNECT❌❌❌
OPTIONS✅✅❌
TRACE✅✅❌


Glossary (用語集)​

核心概念​

Resource (リソース)​

情報の抽象的概念で、URIで識別できるあらゆるもの。リソースはドキュメント、画像、サービス、人、または抽象概念である可能性があります。

例:

  • https://api.example.com/users/123 - ユーザーリソース
  • https://example.com/logo.png - 画像リソース

Representation (表現)​

特定の時点でのリソースの状態情報で、データとそのデータを記述するメタデータで構成されます。

例:

Content-Type: application/json
Content-Language: ja

{"id": 123, "name": "山田太郎"}

User Agent (ユーザーエージェント)​

HTTPリクエストを開始するクライアントプログラム。ブラウザ、モバイルアプリ、コマンドラインツールなど。

例: ブラウザ、curl、モバイルアプリ

Origin Server (オリジンサーバー)​

リソースの権威ソースで、リソースの最終的な表現を提供できるサーバー。


メソッド属性​

Safe Method (安全なメソッド)​

読み取り専用操作で、サーバー状態の変更を要求も期待もしないメソッド。

安全なメソッド: GET, HEAD, OPTIONS, TRACE

Idempotent Method (冪等メソッド)​

複数回の同じリクエストの効果が単一のリクエストと同じであるメソッド。

冪等メソッド: GET, HEAD, PUT, DELETE, OPTIONS, TRACE

Cacheable Method (キャッシュ可能メソッド)​

レスポンスを保存し、後続のリクエストで再利用できるメソッド。

キャッシュ可能メソッド: GET, HEAD, POST (条件付き)


コンテンツネゴシエーション​

Proactive Negotiation (プロアクティブネゴシエーション)​

クライアントがリクエストヘッダーで優先順位を指定し、サーバーが最適な表現を選択します。

リクエストヘッダー: Accept, Accept-Language, Accept-Encoding, Accept-Charset

Reactive Negotiation (リアクティブネゴシエーション)​

サーバーが複数の選択肢を提供し、クライアントが適切な表現を選択します。

ステータスコード: 300 Multiple Choices

Content Negotiation (コンテンツネゴシエーション)​

同じリソースの複数の表現の中から最適な表現を選択するメカニズム。


ヘッダーフィールド​

Representation Metadata (表現メタデータ)​

表現のデータを記述するヘッダーフィールド。

例: Content-Type, Content-Encoding, Content-Language, Content-Location

Request Modifiers (リクエスト修飾子)​

リクエストのセマンティクスを変更するヘッダーフィールド。

例: If-Modified-Since, If-None-Match, Range

Response Control Data (レスポンス制御データ)​

レスポンス処理を制御するヘッダーフィールド。

例: Age, Cache-Control, Expires, Vary


ステータスコード用語​

1xx Informational (情報レスポンス)​

一時的なレスポンスで、リクエストが受信され、処理が続行中であることを示します。

例: 100 Continue, 101 Switching Protocols

2xx Successful (成功)​

リクエストが正常に受信、理解、受け入れられました。

例: 200 OK, 201 Created, 204 No Content

3xx Redirection (リダイレクション)​

リクエストを完了するためにさらなる操作が必要です。

例: 301 Moved Permanently, 302 Found, 304 Not Modified

4xx Client Error (クライアントエラー)​

リクエストに構文エラーが含まれているか、完了できません。

例: 400 Bad Request, 404 Not Found, 403 Forbidden

5xx Server Error (サーバーエラー)​

サーバーが有効なリクエストを完了できませんでした。

例: 500 Internal Server Error, 503 Service Unavailable


メッセージコンポーネント​

Message (メッセージ)​

HTTP通信の基本単位で、ヘッダーとオプションのメッセージボディで構成されます。

タイプ: Request Message (リクエストメッセージ), Response Message (レスポンスメッセージ)

Header Field (ヘッダーフィールド)​

メッセージ内のメタデータで、field-name: field-valueの形式です。

例:

Content-Type: application/json
Content-Length: 123

Message Body (メッセージボディ)​

転送される実際のデータ。

Payload (ペイロード)​

リクエストまたはレスポンスで転送されるデータとそのメタデータ。


キャッシュ関連​

Fresh (新鮮)​

キャッシュレスポンスが有効期間内にあり、再検証なしで直接使用できます。

Stale (古い)​

キャッシュレスポンスが期限切れで、再検証または新しいレスポンスの取得が必要です。

Cache-Control (キャッシュ制御)​

キャッシュ動作を制御するディレクティブ。

例:

Cache-Control: max-age=3600
Cache-Control: no-cache
Cache-Control: private

接続関連​

Connection (接続)​

クライアントとサーバー間のトランスポート層接続。

Persistent Connection (持続的接続)​

複数のリクエスト/レスポンス交換に使用できる接続。

HTTP/1.1: デフォルトで持続的接続


その他の用語​

URI (Uniform Resource Identifier)​

リソースを識別するための統一リソース識別子。

フォーマット: scheme://authority/path?query#fragment

例: https://api.example.com/users?page=1

Media Type (メディアタイプ)​

リソース表現の形式で、MIMEタイプとも呼ばれます。

フォーマット: type/subtype[;parameter=value]

例: application/json, text/html; charset=utf-8

Quality Value (品質値)​

優先度を示す数値で、範囲は0.0-1.0です。

例: Accept: text/html, application/json;q=0.9

Payload Too Large (ペイロードが大きすぎる)​

リクエストまたはレスポンスのメッセージボディが、サーバーが処理する意思または能力を超えるサイズです。

ステータスコード: 413 Payload Too Large


略語​

略語正式名称日本語
HTTPHypertext Transfer Protocolハイパーテキスト転送プロトコル
URIUniform Resource Identifier統一リソース識別子
URLUniform Resource Locator統一リソースロケータ
MIMEMultipurpose Internet Mail Extensions多目的インターネットメール拡張
ABNFAugmented Backus-Naur Form拡張バッカス・ナウア記法
IANAInternet Assigned Numbers Authorityインターネット割当番号機関
RFCRequest for Commentsコメント募集
IETFInternet Engineering Task Forceインターネット技術タスクフォース

戻る: RFC 7231ホームページ