HTTPヘッダーの書き出し

トップ > プログラミング研究 > HTTPヘッダーの記述
一つ前にもどる 目次にもどる 次のページへ

HTTPヘッダーの書き出し - プログラミングのお約束

先ほども、Webプログラムとは、極端に言うと、 最終的にPrint命令でHTMLを書き出すシステムを作ることになると言いました。 しかし!単純に、Print命令で「<html>。。。。」と出力しても、その結果はエラーになるだけで、ホームページとしてブラウザには何も表示されません。

これはどういうことかというと、通常ホームページを見ているときに、ブラウザと接続先のサーバーの間で、HTMLで書かれた「 ソース以外のやり取り」があるということです。

HTTPヘッダーの書き出し

話すとややこしいので、実際に通信されている情報を見てみましょう。

01: HTTP/1.1 200 OK
02: Date: Fri, 09 May 2003 15:48:01 GMT
03: Server: Apache/1.3.27 (Unix)
04: Last-Modified: Fri, 09 May 2003 06:03:10 GMT
05: Accept-Ranges: bytes
06: Content-Length: 31877
07: Connection: ****
08: Content-Type: text/html
09:
10: <html>
11: <head><title>Welcome to my homepage</title>
12: </head>.....

以上の情報がページを見るたびに、またはクリックするたびにサーバーとブラウザの間で行ったり来たりしています。つまり、自分では「abc.html」にいわゆるHTMLタグしか書いていないつもりでも、ブラウザがページを表示するときには、それ以上の情報が付加されて、それをサーバーから受け取って初めてページとして再現できる、という仕組みになっているのです。

そして、通常このような情報はブラウザでは見ることはできませんし、右クリックでソースの表示を選択しても見ることができません。このような情報をヘッダーといいます。(HTMLで記述する <head></head> タグに囲まれた部分とはまた別のヘッダーという情報が存在しています。)

では、全ての情報をブラウザに送信する必要があるかというとそうではなく、表示させるデータのContent-Typeだけ教えれば通常は表示できます。上の例でいうなら8行目の「Content-Type: text/html」という部分です。(その他の情報はWebサーバーが自動的に付け足してくれます。)

ただ、注意が必要なのは、この記述(ヘッダー)とHTMLタグが始まる場所の間には1以上の改行が必要であるため、Perl等でプログラムを書く場合は

print "Content-Type: text/html\n\n";

と言うように、「\n」改行を2ついれて、処理します。(\nは改行を意味するコードです。)上のヘッダーでも一行空いているのがわかりますよね?

なぜそのようなことが必要か、ということですが、これはブラウザがページを表示させるときの約束事、英語ではプロトコルといいますが、そのような決まりになっているからです。(HTTPプロトコルの仕様なのです、、、興味のある方は調べてみては?)

ページを表示する時には、なによりも先にこのデータを出力する必要があるのです。ですから、プログラムの起動の仕方で書いた「Hello World!」を表示させるPrint文は、下記のように一行足さないとブラウザには表示されないのです。

01: print "Content-Type: text/html\n\n";
02: print "<html><head></head><body>Hello World!</body></html>";

(注意・補足)

ここまで書いたのはCGIを用いた場合の例です。これがPHPやIISのASPになると、不要になります。理由は詳しくは書きませんが、プログラムの起動する環境の違いによります。また、同じようにCGIを利用する場合でも「NPH」といって、Webサーバーを介さずに、直接起動された結果をブラウザに返す仕組みもあります。この場合は逆に完全なヘッダーを書いて出力する必要があります。詳しくはここでは述べませんので、興味のある方は「ホームページ作成リンク集」等から該当するページを探してみてください。

一つ前にもどる 目次にもどる 次のページへ
(作成2003/05/31 by あいまい)
(更新2004/12/25 by あいまい)

トップ > プログラミング研究 > HTTPヘッダーの記述

日時: 2008年01月24日 15:32
newsingに投稿BuzzurlにブックマークBuzzurlにブックマークlivedoorクリップに投稿 Choixにブックマーク イザ!ブックマーク このエントリーを含むはてなブックマーク
トップに戻る
このエントリーの所属カテゴリ: プログラミング研究
このエントリーのタイトル:HTTPヘッダーの書き出し



copyright © 2000-2008 all rights reserved
あいまいモード・コム - rss2.0 atom
newsingに投稿BuzzurlにブックマークBuzzurlにブックマークlivedoorクリップに投稿 Choixにブックマーク イザ!ブックマーク このエントリーを含むはてなブックマーク