--- title: HTTP メッセージ slug: Web/HTTP/Messages tags: - Guide - HTTP - WebMechanics - ガイド translation_of: Web/HTTP/Messages ---
HTTP メッセージは、サーバーとクライアントがデータを交換する手段です。クライアントが送信してサーバーにアクションを起こさせるリクエストと、サーバーの回答であるレスポンスの、2 種類のメッセージがあります。
HTTP メッセージは ASCII でエンコードされたテキスト情報で構成されており、複数の行にまたがります。HTTP/1.1 およびそれより前のバージョンのプロトコルでは、メッセージがコネクション内でそのまま送信されます。HTTP/2 では、人間が読める形式のメッセージを HTTP フレームに分割して、最適化やパフォーマンスの向上を実現します。
ウェブ開発者やウェブ管理者がこれらテキスト形式の HTTP メッセージを作成することはめったにありません。ウェブブラウザー、プロキシ、ウェブサーバーといったソフトウェアが行います。それらは HTTP メッセージを設定ファイル (プロキシやサーバー)、API (ブラウザー)、あるいは他のインターフェイスによって提供します。
HTTP/2 のバイナリフレーム化方式は、適用される API や設定ファイルの変更を必要としないように設計されています。これはユーザーに対して透過的です。
HTTP のリクエストやレスポンスは似た構造を共用しており、以下の要素で構成されます。
HTTP メッセージの開始行と HTTP ヘッダーは、まとめてリクエストのヘッドとして知られています。一方、ペイロードは本文として知られています。
HTTP リクエストは、アクションを始めるためにクラアントからサーバーへ送られます。その開始行には、3 つの要素が含まれています。
GET
はリソースを取り込むこと、POST
はデータをサーバーへ送信すること (リソースを作成または変更する、あるいは返送する一時的なドキュメントを生成する) ことを示します。'?'
とクエリー文字列がある絶対パス。これは origin form として知られているもっとも一般的な形式であり、GET
、POST
、HEAD
、OPTIONS
メソッドで使用します。POST / HTTP/1.1
GET /background.png HTTP/1.0
HEAD /test.html?query=alibaba HTTP/1.1
OPTIONS /anypage.html HTTP/1.0
GET
で使用します。GET http://developer.mozilla.org/en-US/docs/Web/HTTP/Messages HTTP/1.1
':'
を前につける) で構成される、URL の authority の部分は authority form と呼ばれます。これは CONNECT
で HTTP トンネルを設定するときに限り使用されます。CONNECT developer.mozilla.org:80 HTTP/1.1
'*'
) である asterisk form は OPTIONS
で使用されており、サーバー全体を表します。OPTIONS * HTTP/1.1
リクエストの HTTP ヘッダー は、HTTP ヘッダーの一定の基本構造に従います。大文字・小文字を区別しない文字列の後にコロン (':'
) と、ヘッダーに応じた構造の値が続きます。値を含むヘッダー全体は 1 行で構成されており、とても長くなる場合もあります。
使用できるリクエストヘッダーは多数あります。これらはいくつかのグループに分類されます。
リクエストの最後の部分が本文です。本文が存在しないリクエストもあります。リソースを取り込むリクエストである GET
, HEAD
, DELETE
, OPTIONS
は通常、本文は不要です。サーバー内のデータを更新するためにデータを送信するリクエストもあり、 POST
リクエストでよくあります (HTML フォームのデータを持つ)。
本文は、大きく 2 種類に分類されます。
HTTP レスポンスの開始行はステータス行と呼ばれ、以下の情報を持ちます。
HTTP/1.1
です。一般的に、ステータス行は HTTP/1.1 404 Not Found.
のようになります。
レスポンスの HTTP ヘッダーは、他のヘッダーと同様に一定の基本構造に従います。大文字・小文字を区別しない文字列の後にコロン (':'
) と、ヘッダーの種類に応じた構造の値が続きます。値を含むヘッダー全体は 1 行で構成されます。
使用できるレスポンスヘッダーは多数あります。これらはいくつかのグループに分類されます。
レスポンスの最後の部分が本文です。本文を持たないレスポンスもあります。 {{HTTPStatus("201")}} Created
や {{HTTPStatus("204")}} No Content
といったステータスコードのレスポンスは通常、本文がありません。
本文は、大きく 3 種類に分類されます。
chunked
に設定して、 chunked 形式でエンコードされます。HTTP/1.x のメッセージには、パフォーマンスの欠点があります。
HTTP/2 は次の段階に進みました。 HTTP/1.x のメッセージを、ストリーム内に埋め込まれるフレームに分割します。データのフレームとヘッダーのフレームは区別され、ヘッダーの圧縮が可能になります。多重化と呼ばれる処理によって複数のストリームがまとめられ、下層の TCP コネクションの効率を向上させることができます。
HTTP フレームは、ウェブ開発者によって透過的になります。これは HTTP/2 において、 HTTP/1.1 メッセージと基盤となるトランスポート層との間のさらなるステップです。 HTTP フレームを利用するためにウェブ開発者が使用する API を変更する必要はありません。ブラウザーとサーバーの両方で利用可能になれば、 HTTP/2 が有効になり使用されます。
HTTP メッセージは、 HTTP を使用する際に重要なものです。その構造はシンプルであり、拡張性が高くなっています。 HTTP/2 のフレーム化機能は、 HTTP/1.x の構文と基盤となるトランスポートプロトコルの間の新たな中間層であり、根底は変わりません。実証された仕組みの上に構築されました。