Lesson3では,HTTPでやりとりされるメッセージの中身を覗いてみる。これはいわば,WebブラウザとWebサーバーの「会話の中身」である。どのような会話が交わされているのかを見てみよう。

1行目でメッセージの概要を伝える

 HTTPリクエストとHTTPレスポンスのメッセージはASCIIコードのテキストで表現されるので,人間が読むこともできる。図3-1に示したメッセージは,Webブラウザが,www.exampleA.co.jpというWebサーバーにindex.htmlというデータをリクエストし,それにWebサーバーが応答した,1往復のやりとりの例である。

図3-1●HTTPメッセージの中身の例
図3-1●HTTPメッセージの中身の例
人間が理解できるテキスト・メッセージの形でやりとりされる。メッセージの1行目に,ほしいデータの在りかや,処理結果などが記述される。

 HTTPリクエストの全体は,三つの部分に分かれる。(1)リクエスト行,(2)メッセージ・ヘッダー,(3)メッセージ・ボディである。

 この中で最も大切なのは,1行目にある(1)のリクエスト行である。この1行で,Webサーバーにどんな処理をしてほしいかを伝えている。右図のケースでは「GET /index.html HTTP/1.1」と記述される。

 先頭にある「GET」の部分はメソッドと呼ばれ,Webサーバーに対する要求を示す情報である。GETは「データを送ってほしい」という要求を伝えるときに使う。続く「/index.html」はパス名で,どこのどんな名前のデータがほしいのかを伝えている。「/index.html」は,ルートにあるindex.htmlというデータを示している。最後の「HTTP/1.1」は,WebブラウザがサポートしているHTTPのバージョンである

 (2)のメッセージ・ヘッダーは対応している言語やエンコード方式などの詳細情報が入る。(3)のメッセージ・ボディは,WebブラウザがWebサーバーにデータを送るときなどに使う。例えばWebブラウザは,データの受信を要求するだけでなく,データを送ることもできる。この場合「POST」というメソッドを使い,メッセージ・ボディ部分にデータを入れてHTTPリクエストを送る。

処理が成功したら「OK」が返る

 HTTPレスポンスの中身も見てみよう(図3-1下)。

 HTTPレスポンスも全体が三つの部分に分かれており,上から,(1)ステータス行,(2)メッセージ・ヘッダー,(3)メッセージ・ボディとなっている。

 こちらも大事なのは1行目にある(1)のステータス行である。この1行で,Webサーバー・ソフトの処理結果を伝えている。右図のケースでは,「HTTP/1.1 200 OK」とある。これは,Webサーバー・ソフト側で,処理が無事に完了したことを示す応答メッセージである。

 (2)のメッセージ・ヘッダーは,レスポンスと同じく詳細情報が入る。そして,(3)のメッセージ・ボディ部分に,データ(今回のケースではindex.htmlの内容)が書き込まれる。

番号でエラーの意味がわかる

 ステータス行の最初にある「HTTP/1.1」というのは,WebサーバーがサポートするHTTPのバージョンである。続く「200」は,ステータス・コードと呼ばれる情報で,この3桁の数値でリクエストに対するサーバーの処理結果がわかるようになっている。最後の「OK」はステータス・コードの意味の説明である。

 ステータス・コードは,処理結果ごとにあらかじめ数値が決まっている。例えば,Webアクセスをしていると,「404」という文字が書かれたエラー画面が表示されることがある。この404は,要求されたデータがなかったことを示すステータス・コードである。この情報を受け取ったWebブラウザが,404という値をそのまま表示したわけだ。