http服務器與cgi交互過程

      在處理cgi GET 表單時,服務器發送給cgi程序是通過環境變量發送的,並且GET的表單內容存放在QUERY_STRING中,因此,在服務器與cgi程序通信之前,會先把GET表單進行解析,並建立環境變量。 同時,由於cgi程序是通過標準輸出向服務器輸出數據,因此在通信之前,還需要建立一條服務器與cgi程序之間的通信管道,重定向cgi程序的標準輸出到服務器的管道讀端口。如下圖所示:




            在處理cgi POST表單時,服務器通過環境變量發送POST表單的長度,服務器向cgi程序輸入數據除了採用環境愛變量外,還把POST的表單內容通過寫管道輸入到cgi的標準輸入,同時cgi程序輸出數據時是通過標準輸出發送到服務器。 因此,在服務器向cgi程序傳送數據的時候,還需要建立兩個管道,並分別把cgi程序的標準輸入與輸出進行重定向。即,在第一條管道中,服務器往管道寫端寫數據,管道的另一端讀端重定向到cgi程序的標準輸入,cgi程序通過標準輸入讀數據。
     在第二條管道中,把管道的寫端重定向到cgi程序的標準輸出,cgi程序通過標準輸出向服務器發送數據,服務器通過管道的讀端讀取cgi發送過來的數據。如下圖所示:


發佈了64 篇原創文章 · 獲贊 69 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章