通用網絡接口
編輯在計算中,通用網絡接口 (CGI) 是一種接口規范,它使 Web 服務器能夠執行外部程序,通常是處理用戶請求。
此類程序通常用腳本語言編寫,通常稱為 CGI 腳本,但它們可能包括編譯程序。
一個典型的用例發生在網絡用戶在使用 CGI 的網頁上提交網絡表單時。 表單的數據在 HTTP 請求中發送到 Web 服務器,其中的 URL 表示 CGI 腳本。 然后 Web 服務器在一個新的計算機進程中啟動 CGI 腳本,將表單數據傳遞給它。 CGI 腳本的輸出,通常以 HTML 的形式,由腳本返回給 Web 服務器,服務器將其轉發回瀏覽器作為對瀏覽器請求的響應。
CGI 開發于 1990 年代初期,是最早可用的允許網頁交互的常用方法。
歷史
編輯1993 年,國家超級計算應用中心 (NCSA) 團隊在 www-talk 郵件列表上編寫了調用命令行可執行文件的規范。 其他 Web 服務器開發人員采用了它,從那時起它就成為了 Web 服務器的標準。 由 Ken Coar 主持的工作組于 1997 年 11 月啟動,以更正式地定義 NCSA 對 CGI 的定義。 這項工作產生了 RFC 3875,它指定了 CGI 版本 1.1。 RFC 中特別提到了以下貢獻者:
- Rob McCool(NCSA HTTPd Web 服務器的作者)
- John Franks(GN Web 服務器的作者)
- Ari Luotonen(CERN httpd Web 服務器的開發者)
- Tony Sanders(Plexus Web 服務器的作者)
- George Phillips(不列顛哥倫比亞大學網絡服務器維護者)
歷史上,CGI 程序通常是使用 C 編程語言編寫的。 RFC 3875 通用網絡接口 (CGI) 部分定義了使用 C 的 CGI,表示環境變量由 C 庫例程 getenv() 或變量 environ 訪問。
CGI 這個名字來自 Web 的早期,網站管理員希望將數據庫等遺留信息系統連接到他們的 Web 服務器。 CGI 程序由在 Web 服務器和遺留信息系統之間提供公共網關的服務器執行。
CGI規范的目的
編輯每個 Web 服務器都運行 HTTP 服務器軟件,該軟件響應來自 Web 瀏覽器的請求。 通常,HTTP 服務器有一個目錄(文件夾),它被指定為文檔集合——可以發送到連接到該服務器的 Web 瀏覽器的文件。 例如,如果Web服務器的域名為example.com,其文檔集合存儲在本地文件系統的/usr/local/apache/htdocs/,那么Web服務器將響應對http:/的請求 /example.com/index.html 通過向瀏覽器發送(預先編寫的)文件 /usr/local/apache/htdocs/index.html。
對于動態構建的頁面,服務器軟件可能會推遲對單獨程序的請求,并將結果轉發給請求客戶端(通常是向最終用戶顯示頁面的 Web 瀏覽器)。 在 Web 的早期,這樣的程序通常很小并且是用腳本語言編寫的; 因此,它們被稱為腳本。
此類程序通常需要在請求中指定一些附加信息。 例如,如果將維基百科實現為腳本,則腳本需要知道的一件事是用戶是否登錄,如果登錄,則使用哪個名稱。 維基百科頁面頂部的內容取決于此信息。
HTTP 為瀏覽器提供了將此類信息傳遞給 Web 服務器的方法,例如 作為 URL 的一部分。 然后服務器軟件必須以某種方式將此信息傳遞給腳本。
相反,在返回時,腳本必須提供 HTTP 響應請求所需的所有信息:請求的 HTTP 狀態、文檔內容(如果可用)、文檔類型(例如 HTML、PDF 或純文本) 等等。
最初,不同的服務器軟件會使用不同的方式與腳本交換此信息。 因此,即使交換的信息相同,也無法編寫無需修改即可用于不同服務器軟件的腳本。 因此,決定指定一種交換此信息的方式:CGI(通用網絡接口,因為它定義了服務器軟件與腳本交互的通用方式)。根據 CGI 規范運行的服務器軟件調用的網頁生成程序 被稱為 CGI 腳本。
該規范很快被采用,并且仍然受到所有知名服務器軟件的支持,例如 Apache、IIS 和(帶有擴展名)基于 node.js 的服務器。
CGI 腳本的早期用途是處理表單。 在 HTML 初期,HTML 表單通常有一個 action 屬性和一個指定為提交按鈕的按鈕。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/193291/