这段时间一直在学习Perl。既然学习了Perl,不学CGI似乎有些说不过去(Perl是CGI事实上的标准语言)。
今天对CGI原理,运行流程,以及相关概念做一个小结。
CGI即公共网关接口,其功能是允许web服务器越过它的常规边界,以便从外部数据库或文件中检索和访问信息。
它定义了一套规范,明确了如果把数据从脚本传到服务器,或者从服务器传给脚本。
当浏览器(客户端)发出请求(HTTP:GET or POST)时,服务器会检查URL。如果服务器在路径中看到了cgi-bin目录,
便会进入该目录,然后打开一个管道,并执行CGI程序(脚本)。服务器会把这个CGI程序(脚本)作为另外一个进程
来执行。服务器给这个进程传递一些参数,CGI程序将从管道获得输入,并通过管道将标准输出返回给服务器。
然后服务器将这些输出返回给浏览器。其标准错误信息则会发送给服务器的错误日志。
每个CG脚本必须输出一个首部行(HTTP),服务器用它来建立完整的响应HTTP的首部。
CGI脚本通过如下方式从服务器获得输入:
1.环境变量
2.查询字符串
3.标准输入
4.附加路径信息
CGI程序从服务器获得输入以后,会对它进行分析和处理,以便让服务器能将信息反馈给浏览器。CGI脚本通过如下方式
经网关发送输出内容:
1.生成动态新文档
2.将现有的静态文件发送到标准输出
3.使用URL,让浏览器重定向到其他位置获取文档