web
伺服器中的
cgi是一段外部程式,它可以動態地生成**,並可以接收輸入的引數。支援
cgi主要分為如下幾個部分:
qcgi
執行程式和輸入引數的分析;
q乙個程序執行
cgi程式,將
cgi程式的輸出發給與客戶端通訊的程序;
q與客戶端通訊的程序生成頭部資訊,並將
cgi執行程序的輸出發給客戶端。
cgi程式及引數的分析用於得到
cgi程式和
cgi程式執行時的輸入引數。例如對於乙個請求
,在伺服器端執行的
cgi程式為
add,引數為a和
b,用於計算a、
b之和。
乙個完整的
cgi程式執行過程如圖
18.12
所示。在分析
cgi程式和引數之後,需要建立程序間通訊管道,便於執行
cgi程式時接收
cgi程式結果。然後程序分叉,主程序負責與客戶端進行通訊,先分析得到頭部資訊,然後與
cgi執行程式程序通訊,讀取
cgi執行的結果,最後關閉程序後退出。
執行cgi
程式是乙個相對來說比較複雜的設計,採用程序間的管道通訊方式,來獲得
cgi程式的輸出併發送到客戶端。
cgi執行程式的輸出為標註輸出,為了在主程序中能夠獲得
cgi執行程序的
cgi輸出,這裡採用了程序間的管道通訊方式並使用了檔案描述符的複製操作,將
cgi執行程序中管道的一端與標準輸出繫結起來,
cgi程式的輸出資料會進行管道,主程式可以在另一端接收到
cgi執行結果在標準輸出的結果。
如圖18.13
所示,構建
cgi執行程式的過程主要分為如下步驟:(1
)建立管道。(2
)程序分叉,分為主程序和
cgi程序,主程序負責與客戶端通訊,
cgi程序負責執行
cgi程式。
在主程序中:
(s.1
)關閉輸入管道的寫端,留下讀端,這個管道另一端在
cgi程序中與
cgi的標準輸出繫結在一起。
(s.2
)從管道中讀取資料。
(s.3
)將資料傳送到客戶端。
(s.4
)如果資料結束等待
cgi程序結束。
圖18.12cgi
程式的執行過程 在
cgi程序中:
(c.1
)關閉管道的讀端,留下寫端,這個管道與主程序中管道的讀端相連,用於將
cgi執行結果傳送給主程序。
(c.2
)將此管道的寫端與程序的標準輸出繫結在一起。
(c.3
)關閉寫管道。
圖18.13cgi
程序構建過程 (
3)執行程式。
具體的管道構建過程如圖
18.14
所示。
18 1 7 SHTTPD支援CGI的需求
cgi 指令碼是任何執行在 web伺服器上的程式,cgi是 common gateway inte ce 的縮寫,通用閘道器介面 的意思。簡單地講,cgi指令碼是乙個可以執行在 web伺服器上的程式,由瀏覽器的輸入觸發。使用這種指令碼,可以執行伺服器端的任何操作,但 cgi指令碼通常用於構建伺服器程...
18 1 5 SHTTPD支援頭部的需求
協議的頭部有很多內容,本書中僅介紹幾個常用的頭域。q主機頭域 主機頭域用於指定請求資源的網路主機 ip位址和埠號,客戶端在傳送請求的時候必須在 url中包含原始伺服器或閘道器的位置。請求必須包含主機頭域,如果沒有包含主機頭域 web伺服器會返回錯誤碼 400。q參考頭域 參考頭域允許客戶端指定請求 ...
Tomcat 開啟 cgi 支援
環境搭建 2.修改tomcat配置 l 修改tomcat根目下 conf web.xml配置檔案,開啟對cgiservlet 和對應 map的注釋。cgiorg.apache.catalina.servlets.cgiservlet debug 0cgipathprefix web inf cgi5...