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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章