解释
有关CGI,百度百科上有一些讲解如下:
CGI(Common Gateway Interface) 是WWW技术中最重要的技术之一,有着不可替代的重要地位。CGI是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。
Common Gateway Interface,简称CGI。在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。这样说大概还不好理解。那么我们看一个实际例子:现在的个人主页上大部分都有一个留言本。留言本的工作是这样的:先由用户在客户端输入一些信息,如评论之类的东西。接着用户按一下“发布或提交”(到目前为止工作都在客户端),浏览器把这些信息传送到服务器的CGI目录下特定的CGI程序中,于是CGI程序在服务器上按照预定的方法进行处理。在本例中就是把用户提交的信息存入指定的文件中。然后CGI程序给客户端发送一个信息,表示请求的任务已经结束。此时用户在浏览器里将看到“留言结束”的字样。整个过程结束。
简单使用
这里上一个CGI的简单使用过程
1. 安装apache
ubuntu 16
ifconfig | grep 121.250
inet addr:121.250.223.57
apt-get install apache2
用浏览器可以看到该默认网页index.html。
ls /var/www/html/
index.html
CGI脚本:示例1
开启apache的cgi支持
cd /etc/apache2/mods-enabled/
ln -s ../mods-available/cgi.load cgi.load
apachectl restart
一开始apache的cgi目录(/usr/lib/cgi-bin/)目录是空的。使用bash写第一个cgi脚本,内容如下:
cat /usr/lib/cgi-bin/hellow1.cgi
#!/bin/bash
echo “Content-type: text/html”
echo ”
echo ‘’
echo ‘bash cgi hello wordl 1’
chmod +x hellow1.cgi
用浏览器打开/cgi-bin/hellow1.cgi可以看到一行文本:
http://scanner/cgi-bin/hellow1.cgi
bash cgi hello wordl 1
注意:为了方便,可以把如下一行添加到
C:\WINDOWS\system32\drivers\etc\hosts
121.250.223.57 scanner
看该页源代码,有两行:
bash cgi hello wordl 1
如果在hellow1.cgi的尾部增加一行|:
env
则在网页中可以看到更多的输出,比如:
REMOTE_ADDR=144.255.7.160
REQUEST_URI=/cgi-bin/hellow1.cgi
QUERY_STRING=
…网页表单加CGI处理:示例2
写一个表单:
cat /var/www/html/req1.htm
req1
text
注:应该使用post方法,但是get相对处理起来稍简单些。
chmod +x /usr/lib/cgi-bin/req1.cgi
cat /usr/lib/cgi-bin/req1.cgi
#!/bin/bash
echo “Content-type: text/html”
echo ”
echo ‘’
echo your input is $QUERY_STRING
浏览器访问 http://scanner/req1.htm
则提交后网址变化为
http://scanner/cgi-bin/req1.cgi?input1=some-txt1
your input is input1=some-txt1
另外一些学习资料
文章转载于:http://blog.youkuaiyun.com/chuanzhilong/article/details/52868737
CGI接口原理及实现(2012-12-7 Over)
1.CGI定义:
CGI(CommonGateway Interface)是HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。
2.CGI功能:
绝大多数的CGI程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的信息反馈给浏览器。CGI程序使网页具有交互功能。
3.CGI运行环境:
CGI程序在UNIX操作系统上CERN或NCSA格式的服务器上运行。 在其它操作系统(如:windows NT及windows95等)的服务器上 也广泛地使用CGI程序,同时它也适用于各种类型机器。
4.CGI处理步骤:
⑴通过Internet把用户请求送到服务器。
⑵服务器接收用户请求并交给CGI程序处理。
⑶CGI程序把处理结果传送给服务器。
⑷服务器把结果送回到用户。
5.CGI服务器配置:
在许多服务器cgi-bin是仅能够放置CGI脚本的目录。
在Windows平台上将C或C++写好的程序的Debug或Release版本的.exe程序拷贝到cgi-bin的目录下(如上图所示),将.exe改为.cgi也可同样运行,如下2个图。
cgi-bin目录是存放CGI脚本的地方。这些脚本使WWW服务器和浏览器能运行外部程序,而无需启动另一个程序。它是运行在Web服务器上的一个程序,并由来自于浏览者的输入触发。
CGI程序不是放在服务器上就能顺利运行,如果要想使其在服务器上顺利的运行并准确的处理用户的请求,则须对所使用的服务器进行必要的设置。
配置:根据所使用的服务器类型以及它的设置把CGI程序放在某一特定的目录中或使其带有特定的扩展名。
Apache网络服务器配置在/var/www/cgi-bin里(如下图所示笔者电脑的目录位置)。C++编译的可执行文件可以转换成扩展名为.cgi的文件。
更改初始配置的的方法: