<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wikippe.e-do-match.com/index.php?action=history&amp;feed=atom&amp;title=Common_Gateway_Interface</id>
	<title>Common Gateway Interface - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wikippe.e-do-match.com/index.php?action=history&amp;feed=atom&amp;title=Common_Gateway_Interface"/>
	<link rel="alternate" type="text/html" href="https://wikippe.e-do-match.com/index.php?title=Common_Gateway_Interface&amp;action=history"/>
	<updated>2026-11-07T05:05:35Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wikippe.e-do-match.com/index.php?title=Common_Gateway_Interface&amp;diff=2347&amp;oldid=prev</id>
		<title>58.87.215.38: Java Servletは内部的なインターフェースとしてCGIを使っていないのでここに含めるのは不適切</title>
		<link rel="alternate" type="text/html" href="https://wikippe.e-do-match.com/index.php?title=Common_Gateway_Interface&amp;diff=2347&amp;oldid=prev"/>
		<updated>2013-09-12T06:16:41Z</updated>

		<summary type="html">&lt;p&gt;Java Servletは内部的なインターフェースとしてCGIを使っていないのでここに含めるのは不適切&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{lang|en|&amp;#039;&amp;#039;&amp;#039;Common Gateway Interface&amp;#039;&amp;#039;&amp;#039;}}（コモン・ゲートウェイ・インタフェース、&amp;#039;&amp;#039;&amp;#039;CGI&amp;#039;&amp;#039;&amp;#039;）は、[[Webサーバ|ウェブサーバ]]上でユーザ[[プログラム (コンピュータ)|プログラム]]を動作させるための仕組み。現存する多くのウェブサーバプログラムはCGIの機能を利用することができる。&lt;br /&gt;
&lt;br /&gt;
ウェブサーバプログラムの機能の主体は、あらかじめ用意された情報を利用者（[[クライアント]]）の要求に応じて送り返すことである。そのためサーバプログラム単体では情報をその場で動的に生成してクライアントに送信するような仕組みを作ることはできなかった。&lt;br /&gt;
そこでサーバプログラムから他のプログラムを呼び出し、その処理結果をクライアントに送信する方法が考案された。それを実現するためのサーバプログラムと外部プログラムとの連携法の取り決めが CGI である。&lt;br /&gt;
&lt;br /&gt;
CGI は環境変数や標準入出力の扱える[[プログラミング言語]]で扱うことができる。&lt;br /&gt;
&lt;br /&gt;
代表的なアプリケーションには、[[電子掲示板]]、[[アクセスカウンタ]]、[[ウィキ]]や[[ブログ]]システムなどがある。&lt;br /&gt;
&lt;br /&gt;
近年では、ウェブサーバから外部のプログラムを呼び出すという負荷の大きい動作を避け、ウェブサーバの一部としてインタプリタを常時起動させておくことにより性能を向上させた [[mod_perl]]や、[[PSGI]]([[Perl]])、[[mod_php]]、[[FastCGI]]、[[Web Server Gateway Interface|WSGI]]([[Python]]) などのインタフェース・実装が一般的である。&lt;br /&gt;
&lt;br /&gt;
== 仕様 ==&lt;br /&gt;
CGI の仕様は[[NCSA]]により最初に定義・実装（[[NCSA HTTPd]]において）され、現在の最新版はCGI1.1である。2004年にRFC 3875となった。&lt;br /&gt;
&lt;br /&gt;
CGI は、典型的には以下のような動作を期待される。CGIを経由して実行されるプログラムのことを、&amp;#039;&amp;#039;&amp;#039;CGIプログラム&amp;#039;&amp;#039;&amp;#039;と呼ぶ。&lt;br /&gt;
&lt;br /&gt;
*CGIプログラムはウェブサーバがクライアントからのリクエストに応じて起動する。&lt;br /&gt;
*:典型的には、ウェブサーバの公開領域に置かれたプログラムに対応する[[Uniform Resource Identifier|URI]]へのリクエストがあると、サーバはそのCGIプログラムをCGIの取り決めに従って呼び出す。&lt;br /&gt;
*CGIプログラムへの情報の入力は、コマンドライン[[引数]]、[[環境変数]]、[[標準入力]]によって行われる。&lt;br /&gt;
**ウェブサーバがCGIプログラムを呼び出す時点でいくつかの環境変数を定義することが定められている。&lt;br /&gt;
**特に、クライアントがサーバに要求したURIのうち、検索文字列(Query String)部が環境変数 &amp;lt;code&amp;gt;QUERY_STRING&amp;lt;/code&amp;gt; に設定されるので、これは[[HyperText Markup Language|HTML]]フォームからGETメソッドで入力を受けるのに便利である。&lt;br /&gt;
**&amp;lt;code&amp;gt;QUERY_STRING&amp;lt;/code&amp;gt; に文字「&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;」が含まれない場合は、サーバは &amp;lt;code&amp;gt;QUERY_STRING&amp;lt;/code&amp;gt; の内容をコマンドライン引数としてCGIプログラムに渡す。これはHTMLの&amp;lt;code&amp;gt;ISINDEX&amp;lt;/code&amp;gt;要素を用いて送信された情報を扱うのに便利である。&lt;br /&gt;
**クライアントからのHTTPリクエストのボディ部はCGIプログラム標準入力に流し込まれる。また、その入力の長さが環境変数 &amp;lt;code&amp;gt;CONTENT_LENGTH&amp;lt;/code&amp;gt; に設定されている。これはHTMLフォームから &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; メソッドで入力を受けるのに便利である。&lt;br /&gt;
**CGIプログラムに対応する仮想パスの後に、更に余分のパスが続いた場合、その情報は環境変数 &amp;lt;code&amp;gt;PATH_INFO&amp;lt;/code&amp;gt; に格納され &amp;lt;code&amp;gt;PATH_INFO&amp;lt;/code&amp;gt; をウェブサーバの仮想パスと解釈した際に対応すべき物理パスが環境変数 &amp;lt;code&amp;gt;PATH_TRANSLATED&amp;lt;/code&amp;gt; に格納される。この方式もまたCGIプログラムにユーザー側からパラメータを渡す目的でよく用いられる。&lt;br /&gt;
*プログラムが[[標準出力]]に出力したデータは、ウェブサーバを経由してクライアントに送られる。このデータは正当な[[HTTPヘッダ]]で始まらなければならない。&lt;br /&gt;
*ただし、いくつかの特別なヘッダフィールドは「サーバディレクティブ」として解釈され、ウェブサーバの挙動（ステータスコードなど）に影響を与える。これ以外の全てのヘッダフィールドはそのままクライアントに送信される。&lt;br /&gt;
*現在のウェブではHTMLが中心的な役割を果たしているので、CGIプログラムはHTMLを出力するケースが圧倒的に多い。&lt;br /&gt;
**画像データなどを出力することもある（これは[[アクセスカウンタ]]などを作る際に使われる）。&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
*[[CGIゲーム]]&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
{{Wikibooks|CGI|CGI}}&lt;br /&gt;
* [http://web.archive.org/web/20070809114039/hoohoo.ncsa.uiuc.edu/cgi/interface.html The CGI Specification(archive.org)]&lt;br /&gt;
* RFC 3875 The Common Gateway Interface (CGI) Version 1.1&lt;br /&gt;
* RFC 1630 Universal Resource Identifiers in WWW&lt;br /&gt;
* RFC 2616 Hypertext Transfer Protocol -- HTTP/1.1&lt;br /&gt;
{{internet-stub}}&lt;br /&gt;
{{Template:Web interfaces}}&lt;br /&gt;
[[Category:Webサーバ]]&lt;/div&gt;</summary>
		<author><name>58.87.215.38</name></author>
	</entry>
</feed>