18 2 8 SHTTPD支援CGI的分析設計

2021-05-14 16:37:18 字數 1515 閱讀 6512

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...