CGI代表公共網關接口。它是web服務器執行程序併為web瀏覽器生成輸出的標準協議。該程序被稱為CGI程序(或CGI腳本)。當用戶的web瀏覽器請求特定的URL時,它代表web服務器執行以產生輸出。
CGI在許多方面增強了網站。從對用戶進行身份驗證到提供全面的購物應用程序,CGIs是使web具有動態性和交互性的核心。下面是使用CGIs增強用戶體驗的一些主要好處。
HTML文件(以及JavaScript和CSS)由web服務器直接提供。另一方面,當請求特定的URL時,CGI程序由web服務器執行。它用於滿足需要訪問動態信息(例如駐留在數據庫中的信息)的請求。例如,驗證用戶以允許訪問:用戶名和密碼可以存儲在數據庫中,驗證用戶的請求需要訪問這些信息。為了服務於這個請求,web服務器將執行一個CGI程序來查找信息並驗證用戶。
web服務器運行HTTP服務器軟件,該軟件提供了提供HTML文件以及執行CGI程序以動態生成輸出的能力。HTTP服務器軟件由web服務器管理員配置為在請求匹配特定模式的url時執行特定程序。
當用戶的瀏覽器向某個特定的URL發出請求時,瀏覽器會以HTTP頭的形式發送一大堆信息,可能還會發送HTTP正文。其中一些可能包括:
當執行一個CGI來滿足這個請求時,服務器將所有這些信息傳遞給CGI程序。CGI可以使用這些信息的一部分或全部來處理請求並將輸出個人化給用戶。
CGIs的主要用途是處理HTML表單。
HTML表單是一種用戶交互設備,它提供各種控件,以便用戶可以提供輸入。當用戶單擊表單上的提交按鈕(或類似按鈕)時,web瀏覽器將聚合表單中的信息並將其發送到表單中指示的目標URL。反過來,web服務器通常調用CGI程序併發送從用戶收集的所有輸入。這種交互稱為表單POST,這是一個技術術語,表示將表單內容發送到CGI的方法。CGI處理表單內容並生成適當的響應發送到瀏覽器。
下面是一個用python編寫的示例CGI程序。可以將其部署到web服務器,以便從類似於以下內容的URL訪問:http://www.example.com/cgi-bin/env.cgi。當被調用時,CGI會報告它在其環境中從web服務器接收到的所有變量。這是一個簡單的CGI程序可以得到。
#!/usr/bin/pythonimport osprint "Content-type: text/plain"for key in os.environ: print key, "=>\"", os.environ[key], "\""cgi幾乎從web誕生之初就已經成為web服務器的一部分。有史以來第一個web服務器,NCSA HTTPd web服務器,最初只支持靜態文件。隨後,人們認識到響應URL請求執行腳本允許web服務器生成動態內容,於是CGI規範誕生了。
最早的CGI程序是用Perl、Tcl、shell等語言編寫的簡單腳本。它也可以用編譯語言(如C/C++)編寫,但這需要編譯程序的附加步驟來創建可執行的CGI。
隨著CGI變得更加複雜,用戶需求增加,人們認識到創建一個單獨的CGI進程來處理每個請求在內存和CPU開銷方面過於繁重。尤其是當服務請求所花費的時間比創建新進程所花費的時間要少的時候。
此時,web服務器開始嵌入成熟的腳本解釋器,以便用戶請求可以在單個web服務器進程內的單獨線程中處理。這提高了請求服務的效率,並縮短了響應時間。
這與專門為web設計的新語言(如PHP)的出現不謀而合。PHP解釋器從CGI程序本身開始。作為請求處理的一部分,它解析請求文件中的PHP指令並執行其中的命令。
今天,除了CGI腳本之外,還有許多用於在服務器上執行代碼以響應請求的技術。
您是否在公司網站的任何部分使用CGI腳本?您在部署或維護CGI腳本時遇到過任何特殊問題嗎?在下面的評論中討論。
...威脅。其中兩個是XSS和CSRF。 目錄 1. 概述和主要區別 2. 什麼是XSS 3. 什麼是CSRF 4. 並列比較——XSS與CSRF的表格形式 5. 摘要 什麼是xss公司(xss)? XSS是一種向網站注入惡意程式碼的程式碼注入攻擊。這是最常見的網站攻擊之一。它...
... 既然您已經知道了shell指令碼是什麼以及它們的許多優點,您不想在任務中使用它們嗎?您在使用它們時遇到了哪些問題?請在下面的評論中告訴我們。 ...
...編輯影象的工具——我們是這裡的超級粉絲,這已經不是什麼祕密了。我們之前已經介紹瞭如何設計一個簡單的logo,以及如何修復過度曝光的照片,所以一旦掌握了基本知識,自動化是下一個合乎邏輯的步驟。 ...
... 但究竟什麼是進步的網路應用呢?PWA做了什麼而網站沒有?以下是您需要了解的漸進式Web應用程式。 ...