cgi是一个连接外部应用程序到信息服务器(比如http或者网络服务器)的标准。一个简单的html文档是无交互后台程序,它是静态的,也就是说它处于一个不可变的状态,即文本文件不可以变化。相反地,cgi程序是可以实时执行地,它可以输出动态的信息。
举个例子吧,如果你想把unix数据库”挂到”万维网上,并允许世界各地的人可以访问它。基本上,就就需要创建一个cgi程序,它的执行将传递信息给数据库引擎,并且把解雇返回给用户显示出来。这是一个网关的例子。
数据库例子是一个简单的思想,在实际应用过程中更为复杂。实际上没有什么不能挂到网络上面的。但是只有一件事情你必须记住:不管你的cgi程序是怎样,一定不能花太多的时间来处理。否则,用户就做在奔腾机前面静静地等着浏览器的显示结果,这势必伤透了”奔腾的心”。
下面讲讲cgi的特殊要求:
既然cgi程序是可执行的,那基本上就等价于世界任何地方的人可以在你的系统中运行cgi程序,所以这是一种不安全的事情。因此在使用cgi程序的时候,需要一些安全的预防措施。可能,一种有效的方法是将cgi程序放置在一个特殊的目录中,这样网络服务器件只是执行cgi程序而不是将它显示到浏览器中。这个特殊的目录通常处在网络管理员直接控制的目录,这样就可以阻止普通用户创建cgi程序。仍然有其它几种方法可以允许用户访问cgi脚本,但是这需要网络管理员为他进行一些设置。在这一点上,你可能有与网络管理员联系以获得访问cgi权限的冲动。
如果你有一个ncsa httpd服务器分布的版本,你将看到一个目录/cgi-bin。这个目录就是上面所提的特殊目录,它就是放置cgi程序的地方。cgi程序可以用任何的语言来编写,并且可以在以下的系统中执行:
c/c++
fortran
tcl
任何的unix shell
visual basic
applescript
采取什么的语言依靠你的系统支持什么语言而定的。如果你使用过一个编程语言如c或者fortran,你就会知道在运行程序之前必须对程序进行编译。如果你进入这个目录,你就会发现一些cgi程序的源代码。但是如果你使用其中一种脚本语言,比如perl、tcl或者unix shell,脚本就只需要放置在/cgi-bin目录中,因为没有相关的源代码。许多设计人员喜欢使用cgi脚本而不使用编程语言,因为脚本比需要编译的程序语言更容易调试、修改和维护。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器