通用閘道器介面


通用閘道器介面 (CGI) 是中介軟體,Web 伺服器透過它執行來自外部程式的使用者請求。這些程式稱為 CGI 程式。CGI 為程式與 HTTP(超文字傳輸協議)伺服器互動提供了框架。

透過表單提交的使用者請求會被傳遞給應用程式程式,該程式處理資料並可能返回確認訊息。這個過程稱為通用閘道器介面。

概述

定義

通用閘道器介面是全球資訊網聯盟與外部程式之間的標準介面。

CGI(通用閘道器介面)是一個在 URL 中指定的可執行程式,它將引數傳遞給 CGI 程式。該程式由 HTTP 伺服器處理,並透過標準輸入訪問環境變數。輸出(例如 HTML 元素)被傳遞迴 HTTP 伺服器,這就是 CGI 程式的處理過程。

當用戶使用指向伺服器的 URL 提交 Web 請求時,伺服器會解析 URL。它會在預配置的目錄(稱為 CGI 目錄)中搜索檔名,並將檔案或錯誤訊息顯示回用戶。

CGI 程式可以透過命令列引數訪問。伺服器端根據 CGI 規範呼叫一個程式,稱為 CGI 指令碼。CGI 程式可以用 C、PERL、Visual Basic、shell 指令碼、C++ 等語言編寫。伺服器以 URL 的形式接收使用者請求,並將其識別為 CGI 指令碼。指令碼被處理,並將輸出作為 Web 客戶端傳遞迴使用者。環境變數在編寫 CGI 程式中起著至關重要的作用。

CGI 應用

互動式應用程式使用 CGI 將使用者的輸入收集到伺服器。讓我們討論以下應用程式:

表單

表單包含 CGI 程式和 HTML。表單是用於收集靜態資料和接受由 CGI 程式處理的命令的視覺化表示。

HTML 表單包含“提交”和“操作”按鈕,它們將 URL 作為查詢字串推送到伺服器。伺服器處理後,它會為使用者生成視覺化 HTML 頁面。

表單包含複選框、文字欄位、單選按鈕、按鈕和選擇列表。

閘道器

閘道器指令碼或程式以 SQL 查詢的形式訪問資料庫資訊。在資料庫中,CGI 程式充當閘道器,用於處理使用者查詢並顯示或檢索虛擬或動態資訊。閘道器程式還可以與 Archie、NNTP 或 WAIS 互動。

虛擬或動態文件

使用者以影像、音訊、文字或 HTML 的形式請求建立虛擬文件。虛擬文件結合了閘道器、表單和圖形。

例如:使用者在網上搜索一幅畫,伺服器會處理該請求,可能會顯示錯誤資訊,或者顯示影像以及其他影像處理選項(如亮度、大小或對比度)給使用者。CGI 程式可以重寫另一個程式來修改影像,並將生成的圖片顯示給使用者。

例如:Lycos 瀏覽使用者請求的文件,並將超文字文件結果與使用者匹配。另一個例子是字典,使用者搜尋英語單詞,並返回等效的德語單詞以及影像。

通用閘道器介面的其他應用包括世界地圖、字典、部落格和塗色書。

CGI 特性

  • CGI 是一個簡單的互動式 shell 指令碼或應用程式。

  • CGI 使用一組明確定義的指令執行。

  • CGI 指令碼主要用 Perl、C 等語言編寫。應用程式可以用任何語言編寫,例如 Java、Python、PERL、C++、C 等。

  • HTML 也可以用於 CGI 作為技術的介面。

  • 執行高階功能時,CGI 比 Java 更容易。

  • CGI 包含可重用的程式碼段。

  • 使用者請求伺服器並獲得響應的一種基本且簡單的方法。

CGI 優點

只要符合規範,CGI 就可以在任何平臺上獨立於語言。程式碼簡單易用。它是安全的,因為 CGI 指令碼在伺服器上執行。CGI 輕量級且易於執行。CGI 基於計數器和簡單任務的 CGI 程式碼的任務可用性。通用閘道器介面的響應速度很快,因此結果會很快。

CGI 缺點

CGI 的缺點如下:

  • 每個頁面都會產生開銷,以將每個頁面程式載入到記憶體中。

  • 在頁面載入期間,資料無法快取在記憶體中。

  • 存在大量的程式碼庫,主要用 Perl 編寫。

  • CGI 處理時間很長。

  • 每個請求都需要開啟一個新的資料庫連線,這使得處理成本高且速度慢。

CGI 安全問題

實現 CGI 指令碼的使用者瀏覽器可能包含錯誤,從而造成潛在威脅。因此,CGI 指令碼中出現了另外兩個安全問題:

有意或無意地洩露有關主機的資訊會造成漏洞,網路罪犯可以利用該漏洞入侵。

遠端使用者可以隱藏以在 CGI 指令碼上執行命令。

結論

CGI(通用閘道器介面)是一組根據介面規範的程式,它將使用者請求傳播到應用程式程式或 Web 伺服器,並透過 Web 介面向用戶提供最終響應,用於 Web 開發。CGI 包含多個指令碼和程式。

更新於:2023年4月14日

8K+ 瀏覽量

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告