CGI程序的基础. 2,CGI规范: 通常,WEB服务器是一台功能强大的计算机,但不可能利用所有处 理能力.CGI的产生使得人们可以用WEB服务器的处理能力为远程客户 提供有趣的,动态的内容.CGI规范应用于WEB服务器及运行在WEB上 的应用程序. 它不是HTTP协议的一部分, 但大多数WEB服务器都支持这 个 规 范,如 NCSAhttpd,CERNhttpd,Apachehttpd,IIS及我们使用的 OmniHTTPD. 2.1,CGI概览 CGI定义WEB服务器,浏览器和应用程序之间的相互操作中共同遵 守的规则集.例如通过WEB浏览器查询远程数据库系统:
2.2,语言: CGI程序可以使用WEB服务器上可以执行的任何语言来编写.您应 该选用最熟悉和最适合目前
工作的语言.如:Perl语言适合字符串和文件 处理,C对大型的,复杂的程序更合适,VisualBasic和Delphi则适合数
据 库的处理,等等.下面是
常用的CGI编程语言: CC++PerlTclPythonShellScriptsVisualBasicDelphiApplescript 2.3,CGI方法: 调用CGI的途径称为CGI方法.主要有三种CGI方法: 2.3.1,GET方法: GET方法是浏览器向WEB服务器提出请求的方法. 使用这种方法时, CGI程序从环境变量QUERY_STRING中获取数据.CGI程序为了得到输 入的参数,必须分析这个环境变量.当传输的数据很长时,应使用POST
方法. 2.3.2,POST方法: 使用POST方法时,CGI程序从stdin(标准输入)得到输入数据.由 于输入数据的最后没有EOF(文件结束标志EndOfFile),CGI程序为了正 确读取输入数据,必须使用环境变量CONTENT_LENGTH值.用这种方 法的最大优点在于可以传输大量数据,而GET方法由于受URL长度的限 制(一般不超过1024字节),无法传输大量数据.这时,POST方法是唯 一的选择. 2.3.3,HEAD方法: HEAD方法基本同于GET方法,只是它是从WEB服务器向浏览器传 输数据.而且,传输的仅仅是HTTP的头信息. 2.4,接口规范: 下面将介绍WEB服务器与CGI程序
通信的四种主要方法:环境变量, 命令行,标准输入和标准输出.(根据CGIVersion1.1给出) 2.4.1,环境变量: AUTH_TYPE:如果服务器支持确认并且脚本得到保护,给出确认 的类型. CONTENT_LENGTH: 给出以字节为单位的用POST方法传输的数据 长度.用GET方法时变量为空. CONTENT_TYPE: 给出用POST方法时传输数据的MINE类型. 当使 用GET方法时变量为空.如:application/x-www-form-urlencoded. GETWAY_INTERFACE:给出CGI规范名和版本号,如:CGI/1.1. PATH_INFO:给出了URL中CGI程序名之后的附加路径信息. PATH_TRANSLATED:CGI程序的物理路径,通常是WEB根目录, 脚本名和附加路径信息. QUERY_STRING:URL中???字符后的信息.使用GET方法时此环 境变量给出输入数据. REMOTE_ADDR:提出请求的远程计算机的IP. REMOTE_HOST:提出请求的远程
计算机的名字. REMOTE_IDENT:给出RFC931中定义的用户名. 注:RFC931是Internet的权威文档,描述了确认TCP连接中识别用户 的方法.文档在:sunsite.auc.dk/RFC/rfc/rfc931.html. REMOTE_USER:给出提出请求的客户端的授权用户名. REQUEST_METHOD:提出请求的方法,可以是GET,HEAD和 POST. script_NAME:要执行CGI程序的虚拟路径,如:/cgi-bin/query.cgi. SERVER_NAME: 运行WEB服务器软件的计算机域名或IP地址, 如: chinabyte. SERVER_PORT:WEB服务器的端口号,缺省值是80. SERVER_PROTOCOL:WEB服务器使用的协议名和版本号,如: HTTPD/1.0. SERVER_SOFTWARE:执行CGI程序的WEB服务器名.格式为?服 务器名/版本号?,如:NCSA/1.5b5. HTTP_ACCEPT:客户端发送的?Accpect:标题行?,对应于客户端
能处理的MIME类型,格式为?类型/子类型,类型/子类型等?,如:*/*, image/gif,image/jpeg. HTTP_REFERER:是Referer:标题行的目录,包含了CGI请求时的 表单(Form)的URL,如:chinabyte/register.form. HTTP_USER_AGEN
T: 提出请求的客户端浏览器名, Mozil