CGIとは、Web上で機能するプログラムの一種で、Webサーバーがクライアント(Webブラウザ)からの要求に応じて動的なプログラムを実行させるための仕組みのことである。
CGIは、基本的には保存してあるデータを要求に応じて送信する働きしか持たないWebサーバーを、プログラムの処理に応じて動的にWebページを生成して送ることが可能となった。チャットやBBS、アンケートフォームなどで一般的に利用されている。CGIには土台となる開発言語を選ばないという長所があり、インタラクティブなページの生成ツールとしては最もポピュラーなものであるといえるが、プログラムを悪用して情報を盗まれるクロスサイトスクリプティングなどの標的にされやすいといった困難も抱えている。
Web上に動的なページを生成する技術としては、CGIの他にSSI(Server Side Include)ややPHP(PHP: Hypertext Preprocessor)、ASP(Active Server Pages)、JSP(JavaServer Pages)などがある。
| スクリプト言語: | Ajax アクティブスクリプト イベントハンドラ CGI CPAN ECMAScript Gauche |
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/06/28 20:26 UTC 版)
|
この記事には参考文献や外部リンクの一覧が含まれていますが、脚注によって参照されておらず、情報源が不明瞭です。
|
Common Gateway Interface(コモン・ゲートウェイ・インタフェース、CGI)は、ウェブサーバ上でユーザプログラムを動作させるための仕組み。現存する多くのウェブサーバプログラムはCGIの機能を利用することができる。 [1][2][3]
ウェブサーバプログラムの機能の主体は、あらかじめ用意された情報を利用者(クライアント)の要求に応じて送り返すことである。そのためサーバプログラム単体では情報をその場で動的に生成してクライアントに送信するような仕組みを作ることはできなかった。 そこでサーバプログラムから他のプログラムを呼び出し、その処理結果をクライアントに送信する方法が考案された。それを実現するためのサーバプログラムと外部プログラムとの連携法の取り決めが CGI である。
CGI は環境変数や標準入出力の扱えるプログラミング言語であれば、どの言語を用いても作成することができるが、主にPHP、Perl、Javaで作成されることが多い。
代表的なアプリケーションには、電子掲示板、アクセスカウンタ、ウィキやブログシステムなどがある。
CGI の仕様はNCSAにより最初に定義・実装(NCSA HTTPdにおいて)され、現在の最新版はCGI1.1である。2004年にRFC 3875となった。
CGI は、典型的には以下のような動作を期待される。CGIを経由して実行されるプログラムのことを、CGIプログラムと呼ぶ。
QUERY_STRING に設定されるので、これはHTMLフォームからGETメソッドで入力を受けるのに便利である。QUERY_STRING に文字「=」が含まれない場合は、サーバは QUERY_STRING の内容をコマンドライン引数としてCGIプログラムに渡す。CONTENT_LENGTH に設定されている。これはHTMLフォームから POST メソッドで入力を受けるのに便利である。PATH_INFO に格納され PATH_INFO をウェブサーバの仮想パスと解釈した際に対応すべき物理パスが環境変数 PATH_TRANSLATED に格納される。この方式もまたCGIプログラムにユーザー側からパラメータを渡す目的でよく用いられる。現在のウェブではHTMLが中心的な役割を果たしているので、CGIプログラムはHTMLを出力するケースが圧倒的に多い。
近年では、ウェブサーバから外部のプログラムを呼び出すという負荷の大きい動作を避け、ウェブサーバの一部としてインタプリタを常時起動させておくことにより性能を向上させた mod_perlや、PSGI(Perl)、mod_php、FastCGI、WSGI(Python) などのインタフェース・実装が一般的である。
このため、比較的新しいウェブサーバアプリケーションでは、CGIを直接動作させる機能を持たないものも存在する。
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/11 15:19 UTC 版)
「Webアプリケーションフレームワーク」の記事における「Common Gateway Interface (CGI)」の解説
World Wide Webの設計は元々ダイナミックなものではなく、初期のハイパーテキストは Webサーバ上で公開されたハードコードのHTMLでできていた。 公開されたページについての変更はページの作者が行う必要があった。ユーザーからの入力を反映したコンテンツを提供するため、Webサーバが外部のアプリケーションとやり取りするためのCommon Gateway Interface (CGI) 標準が導入された。CGIでは各リクエストが別々のプロセスを開始しなければならないため、サーバの負荷に悪い影響を与えることがある。
※この「Common Gateway Interface (CGI)」の解説は、「Webアプリケーションフレームワーク」の解説の一部です。
「Common Gateway Interface (CGI)」を含む「Webアプリケーションフレームワーク」の記事については、「Webアプリケーションフレームワーク」の概要を参照ください。
固有名詞の分類
| Webサーバ |
Mod wsgi NCSA HTTPd Common Gateway Interface Thttpd グーグル・ウェブサーバ |