高エネルギー物理学実験におけるデータ収集

CGI (Common Gateway Interface) について

制約を多くつけた非常に簡単な web server 機能であれば実装することも、それほど難しいわけではない。しかしながら、ユーザの要望に伴いインターフェースの変更が想定されるのであれば、まともな web server program を使うのが賢明だろう。多くの Web server には server 上の他の program を呼び出して、その出力結果を client に返す機能がある。この連携のための interface が server ごとに異なると、server を入れ替える度に連携相手の program も書き換えなければいけなくなるので不便である。そこで、server によらず、一般的なやり方が規格化されている。これが CGI (Common Gateway Interface) と呼ばれるものである。

動作概略

Client からは、server 上の別の program の出力であるかどうかはわからない。あくまでも client から送られる要求メッセージは通常の要求メッセージである。Server は受け取ったメッセージの path を解析して、server により決められている特定のルール(例えば /cgi-bin フォルダ中のファイルへのアクセスであるとか)に合致すれば、外部 program の起動が必要であると判断し、その結果を受け取って client に戻す。

ここで問題になるのが、web server が受け取った要求メッセージを、どのような形で外部プログラムへ渡すのかということと、外部プログラムの出力をどのように client へ戻すのかということである。CGI はそれを定めた規格である。

要求メッセージの引渡し

一般的には OS に依存するが、基本的に次の3つ(単独または組み合わせ)が用いられる

  • 環境変数
  • 標準入力
  • 起動パラメータ

特に GET method で form を送る際などに用いられる URI の query 部は、単独で環境変数に設定される。POST method など、要求にメッセージ本体を伴うものは、本体部は標準入力から渡される。この時、環境変数 CONTENT-LENGTH が設定され、これが示す数が本体部の octet 数である。

応答メッセージ

応答メッセージの引渡しも OS に依存するが、基本的には標準出力を用いる。通常の http server と同様、応答ヘッダ部に続いて応答本文が続く形である。ヘッダ部と本文は空行(<CR><LF><CR><LF>)で区切られる。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-07-14 (月) 11:31:11