HTTPメッセージ

 HTTPは単純なテキストベースのプロトコルである。現在広く使用されているHTTPプロトコルはHTTP/1.1である。ただし古いブラウザなどではHTTP/1.0が使用されるが、Apacheを含むたいていのWebサーバではその両方に対応している。

 Webサーバとクライアントの間では、複数行からなるHTTPメッセージがやり取りされる。WebクライアントがWebサーバへ送るメッセージを「リクエストメッセージ」、その応答としてWebサーバが返すメッセージを「レスポンスメッセージ」という。なお、HTTPメッセージにおける1行とは行末が「CRLF」(キャリッジリターン・ラインフィード)のテキストデータである。



<<リクエストメッセージ>>
 次にリクエストメッセージのフォーマットの概略を示す。

 先頭行のリクエストラインでは、次のような書式でサーバに送る「メソッド」(コマンド)を指定する。

 メソッド URI HTTPバージョン

 ※「URI」(Universal Resource identifiers)とは、リソースの位置を示すための表記法である。実際にはURLはURIの一形式である。ここでは、WebサーバでDocumentRootとして設定されているディレクトリを起点とする絶対パスと考えてかまわない。

 HTMLファイルやイメージファイルの取得には「GET」メソッドが使用される。たとえば、WebサーバのDocumentRootとして設定されているディレクトリから、HTTP/1.1プロトコルを使用し、HTMLファイル「index.html」を取得するリクエストラインは次のようになる。

 GET  /index.html  HTTP/1.1

 2行目以降のリクエストヘッダはリクエストに関する付加的な情報である。各行のフォーマットは次のようになる。

 フィールド名:値

 たとえば「host」フィールドはサーバのホスト名を指定する。なお、「バーチャルホストの設定?」で説明する、バーチャルホストに対応するため、HTTP/1.1以降ではリクエストヘッダに少なくともhostフィールドが必須になっている。次にhostフィールドの例を示す。

 host:www.peachpress.co.jp

 リクエストメッセージのヘッダ以降の部分であるメッセージボディが、クライアントからサーバに送る実際のデータである。コンテンツを取得するGETメソッドなどでは不要だが、たとえば、CGIプログラムなどにデータを送るPOSTメソッドでは、メッセージボディにデータを格納する。



<<主なメソッド>>
 次に、一般的に使用されているHTTP/1.1のメソッドの例を示す。

■HTTP/1.1の主なメソッド
メソッド 説明
GET 指定したリソースを取得
HEAD 指定したリソースのレスポンスヘッダのみを取得
OPTIONS 使用できるメソッドやオプションの一覧を取得
POST サーバにリソースを送信
TRACE サーバの診断に利用



<<レスポンスメッセージ>>
 次にリクエストメッセージを受け取ったWebサーバが返すレスポンスメッセージのフォーマットを示す。

 先頭のステータスラインは要求されたリクエストの結果を示している。

 HTTPバージョン ステータスコード 理由フレーズ

 「ステータスコード」は結果を示す3桁の数値で、「理由フレーズ」はその簡単な説明である。たとえば要求されたファイルが見つからない場合には、次のようなステータスラインが返される。

●ステータスコード
 HTTP/1.1  404  Not Found

 次に主なステータスコードと理由フレーズを示す。

■主なステータスコードと理由フレーズ
ステータスコード 理由フレーズ 説明
200 OK リクエストが正しく処理された
400 Bad Request リクエストが不正なものであった
403 Forbidden アクセスが拒否された
404 Not Found ファイルが見つからない
405 Method Not Allowed 指定したメソッドがサポートされていない
415 Unsupporeted Media Type 指定したメディアタイプがサポートされていない
500 Internal Server Error サーバ内部のエラーが発生した
505 HTTP Version Not Supported リクエストしたバージョンはサポートされていない

 「レスポンスヘッダ」はメッセージに関する付加情報である。各行の書式は「フィールド:値」となる。次に例を示す。

●レスポンスヘッダ
Date : Wed, 08 Nov 2006 05:22:35 GMT ←日付
Server : Apache/2.2.3 (Fedora) ←サーバ名
Last-Modified : Fri, 29 Sep 2006 14:57:49 GMT ←最終更新日
ETag : "1979a1-127-3d29b840" ←コンテンツに割り当てられる固有の値
Accept-Ranges : bytes
Content-Length : 295 ←ファイルのサイズ
Conection : close
Content-Type : text/html; charset=UTF-8 ←①ファイルのタイプ

 ①の「Content-Type」がファイルのMIMIタイプである。HTMLファイルの場合には「text/html」になる。そのあとの「charset」で文字コードを指定することもある。

 最後の「メッセージボディ」は実際にクライアントに送信するファイルである。つまり、HTMLファイルが要求された場合にはそのHTMLファイルの中身がメッセージボディになる。

●メッセージボディ
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" ">
<html>
<head>
    <title>Sample</title>
    <meta http-equiv="Content-type" content="text/html; charset=UTF-8">
</head>
<body bgcolor="#FFFFFF">
    <h1>Hello</h1>
</body>
</html>
最終更新:2007年06月05日 16:32