3.通用网关接口CGI
CGI( Common Gateway Interface,通用网关接口)定义了WEB服务器与其他可执行程序(CGI程序)之间进行交互的接口标准。在 WEB 环境下,客户端浏览器将数据传送给WEB服务器,WEB服务器通过调用CGI程序实现和WEB浏览器进行交互,也就是说,CGI程序接受 WEB浏览器发送给 WEB服务器的信息并进行处理,将响应结构再会送给 WEB服务器及 WEB浏览器。CGI程序主要从环境变量中获取相关信息来运行,最后的结果则以HTML格式输出返回给浏览器端。
CGI程序一般用来完成 WEB网页中表单 FORM数据的处理、数据库查询和插入等有关动态交互内容的工作,CGI程序可以用任何程序设计语言编写,如 shell 脚本语言, perl、fortran、pascal ,c 语言等。不过在嵌入式系统中,由于用 c 语言编写的 CGI程序具有执行速度快、内存开销小且安全性高(因为 c 语言是编译执行且不可被修改)等特点,应用更为广泛一些。
CGI程序与 WEB服务器,以及客户端浏览器之间交互工作的原理图如下:
此图中,我们省略了与TCP/IP等相关的网络部分,着重表现了CGI程序与 WEB服务器和客户端浏览器之间的交互。通常,客户端浏览器通过HTTP协议向 WEB服务器发送请求,WEB服务器通过环境变量或标准输入 stdin 将数据传送给CGI程序,然后通过函数调用等方法访问本地系统的数据进行系统操作,完成之后将操作结构通过 stdout 返回给 WEB 服务器,WEB服务器再将结构通过HTTP协议送回客户端浏览器。
根据CGI接口规范,应用程序与 WEB 服务器之间的通信方法有四种:环境变量、命令行、标准输入和标准输出。
环境变量是有 WEB 服务器执行 CGI应用程序时设置的与系统相关的变量,CGI1.1规范规定的标准环境变量共有17个。
CGI命令行很少涉及,只在进行 ISINDEX 查询是才用到。
当HTTP客户端声音了 POST 方法时,WEB服务器使用标准输入向 CGI程序传送信息。
CGI程序将会执行结果送到标准输出,此输出可能直接送给用户的浏览器或送给 WEB服务器请求解释。
在各种通信方法中,使用最广泛的是环境变量,WEB服务器通常要实现标准的 CGI 环境变量。在后面你将会看到我们如何在 MiniWebServer 中通过环境变量将参数传递给 CGI程序。另外在实现POST方法的支持时,你会学到如何将浏览器发送过来的数据通过管道定向到 CGI程序的标准输入 stdin中。
参考资料:
阅读(3008) | 评论(0) | 转发(0) |