2006 年 8 月 25 日 23 時 57 分

Web サーバの応答


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


まずは、サーバの返信したデータから見てみよう。
見慣れた HTML の前に空行があり、
その上に数行の情報が追加されている。

    HTTP/1.1 200 OK

最初の行は、ステータス行と呼ばれ、
HTTP のバージョンと、要求の成否などの情報である。

最初の 「HTTP/1.1」により、
Web サーバがこの通信に使っている、
HTTP のバージョンが 1.1 ということが分かる。

HTTP は時代と共に改定が加えられており、
最新のバージョンは 1.1 である。
Web サーバは、古いバージョンの通信もサポートでき、
古いユーザエージェントから接続した場合は、
1.0 や 0.9 などが返る可能性もある。

「200 OK」はユーザエージェントのアクセスが
サーバでどのように処理されたかを示している。

前の 200 が 3 桁のステータスコードであり、
最初の桁が 2 であれば、「成功」を意味する。
これは古くからある FTP を参考にしており、
主にコンピュータで簡単に成否を判断するためのものだ。

それに比べ、後ろの OK は、人間が読むためのもので、
ステータスコードに関する説明文となる、
なので、「200 Success」等の場合もある。

ステータス行は、CR-LF の 2 文字で終端する。
これは、Windows で使われている改行コードだ。
そのため、画面上でも改行されて見えるのである。

    Server: Netscape-Enterprise/3.6 SP3
    Date: Fri, 25 Aug 2006 04:36:02 GMT
    Content-type: text/html
    Etag: "1e87a6-1d5b-43b98d7d"
    Last-modified: Mon, 02 Jan 2006 20:30:53 GMT
    Content-length: 7515
    Accept-ranges: bytes
    Connection: keep-alive

2 行目以降空行まではヘッダ行であり、
応答に関する追加情報(レスポンスヘッダ)や、
本体に関するメタ情報(エンティティヘッダ)が含まれる。
本体とは、その下に続くデータ(ここでは HTML)を指す。

ヘッダ行は、HTTP より歴史が古い、
メールで利用されているヘッダの書式を参考にしている。
原則として 1 行が 1 つの情報であり、
名前: 値という形の書式となっている。

Server は、Web サーバのソフトウェアの名前だ。
Last-Modified は、本体の最終更新日である。
そして、Content-Type は、本体の MIME タイプである。

MIME タイプには、image/jpeg とか、
application/octet-stream とか、色々な種類がある。
前は画像の JPEG フォーマットのデータ、
そして後ろは、アプリケーション依存の、
8 ビットの羅列(バイナリデータ)であることを示している。

ユーザエージェントは、このヘッダの内容を確認することで、
送られてきたデータの種類を判別することができる。
それを利用して、画面に表示したり、
ダウンロードさせたり、PDF 等のように、
補助のアプリケーションを起動したりするわけである。

上記の例では、text/html なので、
大区分がテキスト形式、小区分が HTML であることを示す。
text で始まる形式には、後ろにセミコロンをつけて区切り、
さらに追加情報が含まれている場合もある。

    Content-Type: text/html; charset=utf-8

HTML には、META 要素があり、
上に似た記述をすることができる。

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

この、http-equiv は、HTTP と同等という意味である。
本来は、HTTP ヘッダで返却される追加情報を、
HTML の中に埋めこんでおくことができる機能なのだ。


ヘッダ行は可変であり、順番も規定されていない、
ヘッダには様々な種類のものがある。
また、サーバの独自データなどが含まれる場合もある。

ヘッダ行には、X- の接頭後をつけた名前であれば、
独自の名前で任意の値を追加することが認められており、
それを利用すると容易に拡張することができる。
このあたりも、HTTP の柔軟性であると言える。

例えば、Microsoft の IIS で ASP.NET を使う場合、
X-Powered-By: ASP.NET や
X-AspNet-Version: 2.0.50727 などの内容が含まれる。
これにより、サーバの能力を確認することができるのだ。

これらの情報の後に、本体である HTML が続いている。

つまり、ユーザエージェントは、
利用者が求めている本体のデータだけではなく、
関連する様々な情報も受け取って処理をする。

その部分は、HTTP の通信規約の部分であり、
通常は利用者から見えないところで扱われているのだ。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.