通用网关接口CGI

BACKWARDFORWARD


概述
通用网关接口Common Gateway Interface (CGI)是一个外部网关程序和诸如HTTP这样的信息服务器之间的接口标准. Web服务器寻找的普通的HTML文档是静态的, 也就是说是以一种稳定状态存在的: 不会改变的文本文件. 然而一个CGI程序是实时执行的, 以便输出动态信息.

例如, 假设你想把你的Unix数据库 "挂到" World Wide Web 上, 允许世界各地的人们查询它. 一般地,你需要创建一个 CGI 程序,Web 守护进程将执行这个程序向数据库驱动程序(engine)传送信息, 并且接收检索结果和向客户显示. 这是一个网关的例子,也是CGI的由来。CGI的当前版本是1.1。

这个数据库的例子只是一个简单的想法, 多数情况下实现起来要困难得多. 你可以不受限制地把任何内容挂到 Web 上. 唯一要记住的是不管你的 CGI 程序做什么,它都不应该花太长的处理时间. 否则, 用户将只能无奈地看着他们的浏览器,茫然地等待发生什么.


说明
因为一个CGI程序是可执行的, 它基本上是等于让全世界在你的系统上运行一个程序,这可不是十分安全的。因此, 在使用CGI程序时有一些预防的安全措施需要执行. 也许对典型的 Web 用户影响最大的一点是,CGI 程序必须存放在一个指定的目录下,以便Web服务器知道去执行这个程序,而不是显示它. 这个特定的目录一般在 web管理员的直接控制之下, 禁止一般用户随意地创建 CGI 程序. 还有一些其他的手段控制对 CGI 程序的访问, 但是它需要你的 web 管理员来为你设置. 这时你可能需要找他们处理关于允许 CGI 访问的可行性问题.

如果你有一套 NCSA HTTPd 版本的软件, 你将发现一个/cgi-bin目录. 这个目录就是上面提到的存放所有 CGI 程序的指定目录. 一个 CGI 程序可以用系统支持的任何语言来写,例如:

使用什么语言完全由你的系统提供什么来决定. 如果你使用一种诸如 C 或 Fortran这样的程序设计语言, 你知道在运行它之前必须先编译. 如果看一看你的 /cgi-src 目录,你将发现一些在/cgi-bin 目录下的 CGI 程序的源文件. 可是,如果你使用的是一种描述语言,例如 PERL, TCL, 或者一种 Unix shell, 把写好的描述程序直接放到 /cgi-bin 目录就可以了。很多人愿意使用这种 CGI 描述程序来代替编译的程序,因为相对来说它们易于调试, 修改, 和维护.


CGI - Common Gateway Interface

cgi@ncsa.uiuc.edu


Copyright: NPACT BACKWARDFORWARD