2016年6月22日 星期三

CGI, Common Gateway Interface

Common Gateway Interface,共通閘道介面,一種標準介面程式,能讓網頁跟網路伺服器(Web server)溝通,使網頁達到互動效果或動態產生網頁。

個別的網路伺服器(Web server)運行HTTP(超文本傳輸協定)的伺服器軟體,用來回應網路瀏覽器提出的請求。
一般來說,這個HTTP伺服器中有一個被用來存放文件庫的資料夾——當網路瀏覽器提出請求時遞送出文件。
例如,一個域名為example.com的網路伺服器,其文件庫是存放在本機的檔案系統中/usr/local/apache/htdocs的資料夾,當網路伺服器回應http://example.com/index.html的請求時送出存放在/usr/local/apache/htdocs/index.html位置的檔案。

CGI允許網路伺服器的所有者在文件庫的範圍中編製路徑,作為存放可執行的腳本或二進位檔案的容器,用以取代事先寫好的網頁。CGI藉此延伸這個系統,稱作CGI路徑(CGI directory)。
例如,/usr/local/apache/htdocs/cgi-bin在網路伺服器上可以被編製作為CGI路徑。
假設網路瀏覽器請求在CGI路徑範圍中一個URL所指定的檔案(如http://example.com/cgi-bin/printenv.pl),然後取代對檔案的請求送出(/usr/local/apache/htdocs/cgi-bin/printenv.pl)到網路瀏覽器,HTTP伺服器運作該具體指定的腳本並傳送出腳本執行的結果到網路瀏覽器。
綜上所述,腳本執行標準輸出,被傳送到網路用戶端取代終端視窗原來所顯示的畫面。

CGI系統也允許網路瀏覽器經由URL或HTTP POST請求,送出資訊到腳本。
如果URL的腳本名稱緊接著加入斜線符號和附加路徑名稱,在這個腳本被叫用之前,該路徑會被儲存在PATH_INFO環境變數中。
如果參數經由HTTP GET請求(URL加上param=value後面附加問號)被送到腳本,在這個腳本被叫用之前,這些參數會被儲存在QUERY_STRING環境變數中。
如果參數經由HTTP POST請求被送到腳本,參數會被送到腳本的標準輸入。
腳本能夠接著由標準輸入和轉換網路瀏覽器的請求,來讀取這些環境變數或資料。


相關連結
维基百科

沒有留言:

張貼留言