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)
-
- 1.1 適合性とエラー処理 (Conformance and Error Handling)
- 1.2 構文表記 (Syntax Notation)
-
- 3.1 表現メタデータ (Representation Metadata)
- 3.2 表現データ (Representation Data)
- 3.3 ペイロードセマンティクス (Payload Semantics)
- 3.4 コンテンツネゴシエーション (Content Negotiation)
-
4. リクエストメソッド (Request Methods) ⭐
- 4.1 概要 (Overview)
- 4.2 共通メソッドプロパティ (Common Method Properties)
- 4.2.1 安全なメソッド (Safe Methods)
- 4.2.2 冪等メソッド (Idempotent Methods)
- 4.2.3 キャッシュ可能メソッド (Cacheable Methods)
- 4.3 メソッド定義 (Method Definitions)
- 4.3.1 GET
- 4.3.2 HEAD
- 4.3.3 POST
- 4.3.4 PUT
- 4.3.5 DELETE
- 4.3.6 CONNECT
- 4.3.7 OPTIONS
- 4.3.8 TRACE
-
5. リクエストヘッダーフィールド (Request Header Fields)
- 5.1 制御 (Controls)
- 5.2 条件付き (Conditionals)
- 5.3 コンテンツネゴシエーション (Content Negotiation)
- 5.4 認証資格情報 (Authentication Credentials)
- 5.5 リクエストコンテキスト (Request Context)
-
6. レスポンスステータスコード (Response Status Codes)
- 6.1 ステータスコードの概要 (Overview of Status Codes)
- 6.2 情報レスポンス 1xx (Informational 1xx)
- 6.3 成功レスポンス 2xx (Successful 2xx)
- 6.4 リダイレクト 3xx (Redirection 3xx)
- 6.5 クライアントエラー 4xx (Client Error 4xx)
- 6.6 サーバーエラー 5xx (Server Error 5xx)
-
7. レスポンスヘッダーフィールド (Response Header Fields)
- 7.1 制御データ (Control Data)
- 7.2 検証ヘッダーフィールド (Validator Header Fields)
- 7.3 認証チャレンジ (Authentication Challenges)
- 7.4 レスポンスコンテキスト (Response Context)
-
- 11.1 規範的参考文献 (Normative References)
- 11.2 参考情報 (Informative References)
附属書 (Appendices)
- 附属書A. RFC 2616からの変更点 (Changes from RFC 2616)
- 附属書B. インポートされたABNF (Imported ABNF)
- 附属書C. 収集されたABNF (Collected ABNF)
- 附属書D. 索引 (Index)
著作権表示 (Copyright Notice)
Copyright (c) 2014 IETF Trust および文書著者として特定された者。全著作権所有。
関連リソース (Related Resources)
- 公式テキスト: RFC 7231 (TXT)
- 公式ページ: RFC 7231 DataTracker
- 廃止: RFC 2616
- 廃止者: RFC 9110 (HTTPセマンティクス)
主要機能 (Key Features)
HTTPメソッドプロパティ (HTTP Method Properties)
本文書は、HTTPメソッドの3つの中核的プロパティを定義します:
- 安全なメソッド (Safe Methods): サーバー状態を変更しない読み取り専用操作
- 冪等メソッド (Idempotent Methods): 複数の同一リクエストが単一リクエストと同じ効果を持つ
- キャッシュ可能メソッド (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
略語
| 略語 | 正式名称 | 日本語 |
|---|---|---|
| HTTP | Hypertext Transfer Protocol | ハイパーテキスト転送プロトコル |
| URI | Uniform Resource Identifier | 統一リソース識別子 |
| URL | Uniform Resource Locator | 統一リソースロケータ |
| MIME | Multipurpose Internet Mail Extensions | 多目的インターネットメール拡張 |
| ABNF | Augmented Backus-Naur Form | 拡張バッカス・ナウア記法 |
| IANA | Internet Assigned Numbers Authority | インターネット割当番号機関 |
| RFC | Request for Comments | コメント募集 |
| IETF | Internet Engineering Task Force | インターネット技術タスクフォース |
戻る: RFC 7231ホームページ