作成日:2006/05/18
2A HTTP/HTML
2A.1 HTTPの復習
Webプログラミングでは、HTMLを生成し、そのHTMLをHTTPを使ってクライアント(ブラウザ)に届けます。 また、ブラウザからの情報はHTTPを使ってWebプログラミングに届けられます。 PHPの説明に入る前に、HTTPについて簡単に復習しておきます。 HTTPメッセージフォーマットの正確な情報は以下を参照して下さい。
RFC2616 --- http://www.faqs.org/rfcs/rfc2616
また、HTTPの日本語による情報は以下のサイトが詳しいです。
studying HTTP --- http://www.studyinghttp.net/
2A.1.1 HTTPメッセージフォーマット
HTTPメッセージは行を単位として以下のような構造になっています。各行は CR+LF によって区切られています。
| 種類 | フォーマット構造 | |
|---|---|---|
| Request Message | Request Header | リクエストライン ヘッダーフィールド (複数行からなる) |
| 空行( CR+LF ) | ||
| Message Body | ||
| Response Message | Response Header | ステータスライン ヘッダーフィールド (複数行からなる) |
| 空行( CR+LF ) | ||
| Message Body | ||
| 形式 | 説明 |
|---|---|
例:
GET /index.html HTTP/1.1 |
クライアントは、リクエストラインのメソッドによって、命令をサーバに伝えます。 良く使われるメソッドを以下に示します。
|
例:
HTTP/1.1 200 OK |
サーバは、ステータスラインの Status-Code によって、リクエストの処理結果をクライアントに伝えます。 Status-Code の種類を以下に示します。
|
例:
Host: www.y2sunlight.com |
ヘッダーフィールドは複数行からなり、付随的な情報をサーバやクライアントに伝える為に使用します。 |
2A.1.2 ヘッダーフィールド
ヘッダーフィールドは便宜的に、以下のように分類されます。
| フィールドの種類 | 説明 |
|---|---|
| Request Header | Request Message 固有のフィールド |
| Response Header | Response Message 固有のフィールド |
| General Header | 共通のフィールド。主にMessage全体の属性を示す |
| Entity Header | 共通のフィールド。主にMessage Bodyの属性を示す |
よく使うヘッダーフィールド
| フィールドの種類 | フィールド名 | 説明 |
|---|---|---|
| Request Header | Host | リクエスト先サーバ名(DNS名)。HTTP1.1では必須フィールド |
| If-Modified-Since | 指定した日時より新しい場合のみリーソースを取得する。リソースが指定日時から更新されていない場合、ステータス(304: NotModified)を返す | |
| Referer | 直前にリンクされていたURL | |
| User-Agent | HTTPクライアント(ブラウザなど)の名前とバージョン番号 | |
| Response Header | Server | HTTPサーバの名前とバージョン番号 |
| Location | リダイレクト先URI | |
| WWW-Authenticate | 基本認証で使用 | |
| General Header | Cache-Control | キャッシュコントロールに関する情報 |
| Date | 日付情報 | |
| Pragma | クライアントやプロキシのための特殊な追加情報 | |
| Entity Header | Content-Length | Message Bodyのサイズ[バイト数] |
| Content-Type | Message Bodyのメディアタイプや文字コードなど | |
| Expries | Message Bodyの有効期限。ブラウザはキャッシュの保存期間として利用 | |
| Last-Modified | Message Bodyの最終更新日時 |
※使用例については「HTTP関連関数 header()関数の使用例」を参照して下さい。
2A.1.3 Content-Typeフィールド
Content-Type フィールドはWebプログラミングで最もよく見かけるフィールドの1つです。 このフィールドには Message Body のメディアタイプと文字セットが含まれます。 これらは共にIANA (http://www.iana.org/)によって登録/管理されています。
用例:
Content-Type: text/html; charset=ISO-8859-1
メディアタイプの例
| メディタイプの種類 | 設定値の例 |
|---|---|
| テキスト | text/html, text/plain, text/css |
| 画像 | image/jpeg, image/png, image/gif |
| 動画 | video/mpeg, video/quicktime |
| アプリケーション | application/octet-stream, application/zip, application/pdf |
文字セットの例
| 文字セット | 設定値 |
|---|---|
| Latin-1 | ISO-8859-1 |
| JIS コード | ISO-2022-JP |
| シフトJIS | Shift_JIS |
| EUC | EUC-JP |
| UTF-8 | UTF-8 |
※現在に登録されている文字セットは http://www.iana.org/assignments/character-sets を参照して下さい。
