1. 程式人生 > >CGI的工作原理

CGI的工作原理

設置 mark 之間 com 環境變量 沒有 mar 輸出 表單

CGIWebserver和外部程序之間的一個接口。

利用CGI程序能夠處理從Web上client發送出來的表單和數據。並對此做出相關操作。這樣的反應能夠是HTML文件、圖片、聲音、視頻等能夠在瀏覽器窗口上出現的不論什麽數據。通用網關接口有兩個含義。首先它為client用戶通過www獲取Internet上的其它服務,比如ArchieWAISDatabase等提供了一個接口,盡管不能直接在www上訪問這些服務,可是您能夠通過一個CGI程序和Webserver訪問它們。

其次它就是您編寫的程序和Webserver間的接口標準。您所編寫的處理client有關信息的程序必須遵循這個標準。

那麽,

CGI是怎樣在client的Web瀏覽器(如Netscape Navigator)和Webserver(如NSCA HTTPd)間工作的呢?

當client的瀏覽器向Webserver請求一個HTML文件時,server在收到請求後就去尋找這個文件並將找到的文件傳送給client。而當client的請求是一個CGI程序時,Webserver將激活client所請求的CGI程序。

此時Webserver所起的作用就好像是client和CGI程序間的中間人。如圖所看到的。

CGI程序的工作一般能夠分為下面幾個步驟。

技術分享

1.client發出請求

首先,client的瀏覽器發出一個請求給

Webserver。假設這個請求是一個普通的文件(比如HTML文件、GIFJPEG文件),Webserver就將文件直接傳送給client的瀏覽器。假設這個請求是一個CGI程序或外部應用,Webserver將激活對應的CGI程序。比如:client傳送來的請求可能是對一個數據庫的檢索,此時一個對應的CGI程序將被Webserver激活,這個CGI程序將依據client要求的準則去檢索對應的數據庫。並通過Webserver將結果傳送給client。

2. Webserver激活CGI程序

Webserver發現client瀏覽器傳送來的請求不是一個普通文件而是一個CGI程序時,Web

server就要激活這個CGI程序並運行它(比方:http://www.example.com/wiki.cgi)。

在這個CGI程序被執行前,Webserver要為該CGI程序設置一些環境變量。這些環境變量被server用來向CGI程序傳遞一些很重要的信息,比如當前Webserver的狀態、誰發出的調用等等。

Webserver為CGI程序所設置的環境變量的使用和正常的環境變量的使用沒有不論什麽差別。當CGI程序執行結束時,Webserver為它設置的環境變量也隨著消失。

每一個被激活的CGI程序都有自己唯一的一組環境變量。其實對於一個非常繁忙的Webserver。可能同一時候會有同一個CGI程序的非常多個進程在執行。這時每一個CGI程序的進程都有自己的執行環境,互不影響。

3. CGI程序對client的請求做出反應

CGI程序通過環境變量或其它途經讀取Webserver所提供的client的輸入數據並對這些數據進行處理,假設有必要CGI程序還要和一些外部的服務比如ArchieWAISDatabase等發生聯系。最後CGI程序將通過Webserver將處理結果傳送給client。CGI程序能夠依據須要產生各種類型的數據。

4. Webserver將CGI程序的處理結果傳送給client

Webserver收到了CGI程序的處理結果後將對CGI程序的輸出進行檢查,如有必要,將為CCI程序的輸出結果加上一些HTTP協議所必須的HTTP頭信息。

檢查完畢後將把CGI程序的輸出傳送給client。

5. Webserver中斷和client瀏覽器的連接。

6. Web瀏覽器將CGI程序的輸出顯示在瀏覽器的窗口上。

CGI的工作原理