用語「CGI」について
CGI (1) (しーじーあい)
Common Gateway Interface の略です。Web サーバと、内部のプログラムとのやりとりの際のインターフェイスを規定しています。
Web アプリケーションなど、Web を通してサーバ側でプログラムが動いている場合、クライアントは Web サーバにアクセスして、Web サーバに対してリクエストを送り出します。その内容に応じてプログラムが適切な処理を行い、その結果をクライアントに返します。
このとき、クライアントからデータを受け取るのは Web サーバで、それを処理するのは別のプログラムですから、両者の間でデータの受け渡しが必要となります。そのデータの受け渡し方の一つが、CGI と呼ばれるインターフェイスです。CGI では、たとえば、以下のようにして Web サーバからプログラムにデータを渡します。
- Web サーバに対して POST されたデータは、標準入力として渡される。
- クエリストリングは環境変数 QUERY_STRING に格納されて渡される。
- パス情報は環境変数 PATH_INFO に格納されて渡される。
- Web サーバに対して送られた HTTP 要求ヘッダの各フィールドは環境変数に格納されて渡される。環境変数の名前は、フィールド名を全て大文字に変換し、"-" を "_" に変換した上で頭に HTTP_ を付加したものとなる。たとえば、Referer フィールドの内容は HTTP_REFERER という名前の環境変数として渡されることになる。
逆に、プログラムから Web サーバに出力結果を渡す際には、たとえば以下のような決まりがあります。
- クライアントに返す結果は標準出力に書き出す。
- 最初に HTTP 応答ヘッダを出力し、LF または CR+LF を出力してから本文を出力する。
なお、サーバ側で動作するプログラムすべてが CGI を利用しているというわけではありません。たとえば ASP や PHP, JSP などは、CGI で Web サーバとデータのやりとりをしているわけではありません。
CGI (2) (しーじーあい)
本来、CGI とは Web サーバ、プログラム間のやりとりのインターフェイスを指します。このインターフェイスを使用するプログラムは「CGIプログラム」などと呼ばれます。CGI プログラムは Perl などのスクリプト言語で書かれていることが多く、その場合は「CGIスクリプト」と呼ばれることもあります。
しかし、この「CGIプログラム」のことを単に「CGI」と称することもあります。よく「CGI を作る」などという言い方がなされますが、それはインターフェイスの仕様を作るという意味ではなく、このインターフェイスを利用する「CGIプログラム」を作るということを意味しています。むしろ、単に「CGI」と言った場合、それがインターフェイスを指していることよりもプログラムを指している事の方が多いくらいです。
- 「CGI」へのコメント (2件)