CGI 一.基本原理 CGI:通用网关接口(Common Gateway Interface)是一个Web 服务器主机提供信息服务的标准接口。通过 CGI 接口,Web 服务器就能够获取客户端提交的信息,转交给服务器端的CGI 程序进行处理,最后返回结果给客户端。 组成 CGI 通信系统的是两部分:一部分是html 页面,就是在用户端浏览器上显示的页面。另一部分则是运行在服务器上的Cgi 程序。 它们之间的通讯方式如下图: 服务器和客户端之间的通信,是客户端的浏览器和服务器端的http 服务器之间的HTTP通信,我们只需要知道浏览器请求执行服务器上哪个CGI 程序就可以了,其他不必深究细节,因为这些过程不需要程序员去操作。 服务器和 CGI 程序之间的通讯才是我们关注的。一般情况下,服务器和 CGI 程序之间是通过标准输入输出来进行数据传递的,而这个过程需要环境变量的协作方可实现。 1. 服务器将 URL 指向一个应用程序 2. 服务器为应用程序执行做准备 3. 应用程序执行,读取标准输入和有关环境变量 4. 应用程序进行标准输出 对于 Window s 系统而言,还可以通过 profile 文件进行数据传输(如 ini 文件),但在 这里不做研究。 环境变量在 CGI 中有着重要的地位!每个CGI 程序只能处理一个用户请求,所以在激 活一个CGI 程序进程时也创建了属于该进程的环境变量。 服务器 客户端 CGI 程序 HTTP 通信 标准输入输出 (环境变量) 二.环境变量 对于CGI 程序来说,它继承了系统的环境变量。CGI 环境变量在CGI 程序启动时初始化,在结束时销毁。 当一个CGI程序不是被HTTP 服务器调用时,它的环境变量几乎是系统环境变量的复制。 当这个CGI 程序被HTTP 服务器调用时,它的环境变量就会多了以下关于HTTP 服务器、客户端、CGI 传输过程等项目。 与请求相关的环境变量 REQUEST_METHOD 服务器与 CGI 程序之间的信息传输方式 QUERY_STRING 采用GET 时所传输的信息 CONTENT_LENGTH STDIO 中的有效信息长度 CONTENT_TYPE 指示所传来的信息的MIME类型 CONTENT_FILE 使用Windows HTTPd/WinCGI 标准时,用来传送数据的文件名 PATH_INFO 路径信息 PATH_TRANSLATED CGI 程序的完整路径名 SCRIPT_NAME 所调用的CGI 程序的名字 与服务器相关的环境变量 GATEWAY_INTERFACE 服务器所实现的CGI 版本 SERVER_NAME 服务器的IP 或名字 SERVER_PORT 主机的端口号 SERVER_SOFTWARE 调用CGI ...