CGI基本觀念 - Common Gateway Interface
- CGI架構

- CGI程式接收輸入訊息的兩種方式
- 如果Web前端所使用的Form之Method為GET:
- 利用環境變數(Environment Variable): QUERY_STRING
- 如果Web前端所使用的Form之Method為POST:
- 利用Standard Input
環境變數:CONTENT_LENGTH會記錄輸入字元長度
- 讓我們來看看實際的例子:
- http://www.im.tj.mcu.edu.tw/~ycchen/cgi/formTest.html
- CGI程式可以讀取哪些環境變數(Environment Variable)?
請參考實例:http://www.im.tj.mcu.edu.tw/~ycchen/getEnv.cgi
- 一般而言,輸入之參數字串為多對name=value以"&"符號串接起來,例如
name1=value1&name2=value2&name3=value3
-
由於輸入資料可能有空白、標點符號、或其他非ASCII字元,例如中文,Web前端會先將這些特殊字元編碼後送出,因此CGI程式在收到之輸入資料後,必須將之轉回原訊息,方能進一步處理。
- CGI程式如何將所產生之動態HTML結果傳回給Web前端?
===> 經由Standard Output
-
依據HTTP標準之說法,我們稱這些要傳回之訊息:"entity".
- 一個entity包括entity-header欄位及entity-body兩部份。entity-header欄位主要描述所要傳回的訊息之內容型態、長度、及其他相關描述。而entity-body即為欲傳回訊息本身。
- 最常見的entity-header為"Content-Type: text/html".
其中"text/html"可依據實際訊息型態換為適當的MIME type/MIME subtype.
- entity-header與entity body間必須以一個carriage return(CR)及一個linefeed(LF)間隔。
- CGI程式可以不產生HTML結果,而是回覆另一URL,使Web前端連至此URL。
此種情形,CGI程式只要送CGI程式只要送出"Location:AnAbslouteURL"後加上CR及LF及即可。
讓我們來看看實際的例子:
http://www.im.tj.mcu.edu.tj.tw/~ycchen/cgi/mcu.cgi
Source Code
- NCSA CGI簡介
- Yahoo! CGI連結
- 王金龍老師之CGI教材(PowerPoint)