Common Gateway Interface

コモン・ゲートウェイ・インタフェース (CGI) について



コモン・ゲートウェイ・インタフェース(CGI)は、ウェブサーバ上でユーザプログラムを実行するための標準的な方式です。この仕組みにより、ユーザからのリクエストに基づいて動的なコンテンツを生成し、返すことが可能になります。従来のウェブサーバプログラムは静的に情報を提供するだけだったため、CGIの導入により、インタラクティブなウェブアプリケーションの開発が実現しました。

CGIは、サーバがクライアントからの要求を受け取った際に、他のプログラムを呼び出すことで、リアルタイムで情報を生成し、それを応答として返す仕組みを提供します。CGIプログラムは、環境変数や標準入出力が扱える任意のプログラミング言語で作成可能であるため、主にPHP、Perl、Javaなどが使用されることが多いです。

CGIの基本的な動作


CGIプログラムは、ウェブサーバがクライアントからのHTTPリクエストに応じて実行されます。リクエストしたURIに対応するプログラムが公開領域に配置されている場合、サーバはそのCGIプログラムを呼び出します。

CGIプログラムに対する入力は、コマンドライン引数や環境変数、標準入力から行われます。具体的には、クライアントが要求したURIの一部である検索文字列は環境変数 `QUERY_STRING` に格納されます。この情報は、HTMLフォームからのGETリクエストに役立ちます。また、クライアントから送信されたデータは、CGIプログラムの標準入力に流し込まれます。

さらに、特定の環境変数を通じて追加の情報がCGIプログラムに渡されることもあります。たとえば、URIの余分な部分は `PATH_INFO` に格納され、物理的なパスは `PATH_TRANSLATED` に設定されます。こうした機能を通じて、ユーザはCGIプログラムに対してパラメータを送信し、様々な出力を得ることが可能となります。

CGIの出力とHTTPヘッダ


CGIプログラムがデータを出力する際は、特に正しいHTTPヘッダを伴って行う必要があります。出力の最初には、必ず適切なHTTPヘッダが含まれていなければなりません。また、一部のヘッダフィールドは「サーバディレクティブ」として解釈され、サーバの動作に影響を与えることがあります。一般的に、CGIプログラムはHTMLを出力することが多く、場合によっては画像データを生成することもあります。

近年のCGIの代替手段


CGIはその便利さから広く利用されていますが、ウェブサーバから外部プログラムを呼び出す際の負担が大きいため、近年では他の技術が一般的となっています。例えば、mod_perlやFastCGI、WSGIなどのインターフェースは、ウェブサーバ内でインタプリタを常駐させ、性能を向上させています。このような新しいウェブアプリケーションの中には、CGIとしての機能を持たないものも増えています。

CGIは、開発者に柔軟性を提供する一方で、負荷や性能の問題のために、他の方法に置き換えられつつあります。しかし、その原則に基づくアイデアは、今なおウェブ開発の重要な基盤として機能しています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。