-
Notifications
You must be signed in to change notification settings - Fork 4
/
982.txt
102 lines (83 loc) · 5.05 KB
/
982.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
[18] [DFN[CGI]] は、
[CODE[Common Gateway Interface]]
(共通関門界面) の略で、 [[HTTP]]
サーバーがスクリプトを実行してその結果を応答として返すための共通規格として
1993年に [[CGI/1.0]] が、
1994年に [[CGI/1.1]] (初版)
が策定されました。
[FIG(quote)[
[FIGCAPTION[
[27] [CITE@en[[[RFC 3875]] - The Common Gateway Interface (CGI) Version 1.1]]
<http://tools.ietf.org/html/rfc3875>
]FIGCAPTION]
> [DFN[[RUBYB[共通関門界面]@en[Common Gateway Interface]]]] ([DFN[CGI]]) は、
[[情報鯖]]の元で外部の[[プログラム]]や[[ソフトウェア]]、[[関門]]を[[プラットフォーム]]独立な方法で実行するための、
簡単な[[界面]]です。現在、対応している[[情報鯖]]は [[HTTP]] [[鯖]]です。
]FIG]
[19] CGI/1.0 は歴史的なもので、
現在では既に影すらありません。
CGI/1.1 は、現代からみると曖昧な仕様であることと、
その後の時代の変化と現実の実装を反映する必要があることから、
[[IETF]] [[RFC]] で再定義することを目指して
[[Internet-Draft]] が書かれていますが、
作業は遅々として進まず、
当分 I-D のままと思われます。
[20] その一方で、 HTTP CGI
とは別に、 [[SIP]] で似たように働く
SIP CGI が [[RFC3050]] (2001)
として制定されました。 (HTTP
CGI RFC がいつまで経ってもできないので痺れを切らして先に
RFC 化してしまったような感じです。)
CGI は当初からプロトコル独立を謳ってきました [WEAK[([[Gopher]] とかでも使えることを意図していました)]]
が、 HTTP 以外で実質的な実装があったのかは不明でした。
それがここにきてようやく日の目をみたのですから、世の中何が起こるか分かりません。
* CGI の版と派生仕様
[FIG(list short)[
- [[CGI/1.0]]
- [[CGI/1.1]]
- [[CGI/1.2]]
- [[SIP CGI]]
- [[SSI]]
- [[WinCGI]]
- [[FastCGI]]
- [[SCGI]]
- [[WSGI]] / [[Rack]] / [[jsgi]] / [[PSGI]]
- [[local CGI]]
]FIG]
* CGI の構成要素
[FIG(list)[
- [[CGI要求]] (サーバーからスクリプトへ)
-- [[CGIメタ変数]]
-- [[要求データ]]
-- [[スクリプト命令行]]
- [[CGI応答]] (スクリプトからサーバーへ)
-- [[NPH応答]]
-- [[応答本体]]
--- [[.//動作行]]
--- [[.//頭欄]]
]FIG]
- [1] ''Common Gateway Interface - 1.1 *Draft 03*'' <http://cgi-spec.golux.com/draft-coar-cgi-v11-03-clean.html>
- [2] ''The Common Gateway Interface Specification'' <http://hoohoo.ncsa.uiuc.edu/cgi/interface.html> (CGI/1.1)
- [3] ''WWW Talk Jan 94-present'' <http://ksi.cpsc.ucalgary.ca/archives/WWW-TALK/www-talk-1994q1.index.html> CGI/1.1 の仕様策定
- [4] ''WWW Talk Oct 93-present'' <http://ksi.cpsc.ucalgary.ca/archives/WWW-TALK/www-talk-1993q4.index.html> CGI/1.0 の仕様策定
- [5] >>4 CGI/1.0 の仕様書って今は手に入らなさげなんですが、 CGI/1.1 との大きな違いは、 HTTP 頭欄が HTTP_* 環境変数で CGI script に渡されることと、 CGI script が出力した頭欄で CGI 頭欄でないものは HTTP 頭欄として HTTP UA に送られることみたいです。
- [8] ''CGIのメカニズム (How a CGI Runs)'' <http://web.archive.org/web/20020203190929/www.dais.is.tohoku.ac.jp/~kabe/WWW/cgimech/cgi-mechanism.html>
- [17] <http://ksi.cpsc.ucalgary.ca/archives/WWW-TALK/www-talk-1993q4.messages/515.html>: [[CGP]]/1.0 の最初の draft
- [21] <http://www.sambar.com/syshelp/cgi.htm>: [[Sambar]] という HTTP サーバーの実装について。
- [22] [[FastCGI]] <http://www.fastcgi.com/devkit/doc/fastcgi-prog-guide/cover.htm>: CGI の一変種。
- [23] CGI: Common Gateway Interface part 11 <http://pc2.2ch.net/test/read.cgi/php/1055597189/> : 常に [[perl]] の侵蝕を受けているものの、基本的にはちゃんと違いを分かってる人がいるスレ。ちゃんと [[HTML]] とか [[HTTP]] とか [[URI]] のはなしをしている・・・ってそれだって CGI と違うやん(w
- [24] >>23 と高評価してしまったけどそうでもないみたい。たまたままともなところを読んだだけで全体的には厨ばっか。
[25]
[CITE[Shibuya Perl Mongers : Shibuya Perl Mongersテクニカルトーク#3]] <http://shibuya.pm.org/blosxom/techtalks/techtalks_200306.html#techtalks_200306>
[[Apache]] の [[mod_cgi]] の実装の非常に簡単な解説 (発表資料 PDF あり)。
([[名無しさん]] [sage])
[26]
[[iPlanet]] は [[CGIスクリプト]]の[[標準出力]]だけでなく、
[[標準誤り出力]]まで [[HTTP]] [[クライアント]]に送るそうです。。。
([[名無しさん]] [sage])
[28] [CITE[HTTP::Request::AsCGI - search.cpan.org]]
( ([TIME[2012-02-12 13:25:42 +09:00]] 版))
<http://search.cpan.org/dist/HTTP-Request-AsCGI/lib/HTTP/Request/AsCGI.pm>
[29] [CITE[WWW::Mechanize::CGI - search.cpan.org]]
( ([TIME[2012-02-12 13:27:05 +09:00]] 版))
<http://search.cpan.org/dist/WWW-Mechanize-CGI/lib/WWW/Mechanize/CGI.pm>