boa-0.94.13:Hello CGI

浏览:
字体:
发布时间:2013-12-09 23:23:29
来源:

CGI是什么

CGI全称是CommonGateway Interface,简称CGI,中文名叫做通用网关接口。

CGI程序就是符合CGI接口规范的程序,相对于WebServer来说也叫外部程序。

CGI接口规范的定义,使得WebSever具备了动态服务功能。客户端或者浏览器通过HTTP协议的GET、POST方法将将form表单数据提交给Web Sever,然后Web Sever 再将客户端的数据交给CGI程序处理,最后由CGI程序将用户数据的处理结果返回给Web Sever,Web Sever将处理结果返回给客户端。

Web Server收到客户端的数据,怎么传递给CGI程序? CGI程序处理后的结果怎么传回给Web Server?这些内容都在CGI规范里定义了。具体参考http://www.ietf.org/rfc/rfc3875.txt。

CGI程序

CGI程序就是按照CGI规范,从WebServer获取客户端数据,然后进行相应处理,将处理结果返回给Web Server。因此CGI程序可以用任何编程语言实现,python,shell,C,java等等。

在linux下,CGI程序通过环境变量QUERY_STRING获取客户端数据,具有如下形式:”name1=value1&name2=value2&name3=value3”;CGI程序通过标准输出(stdout)将处理结果返回给WebServer。

Hello CGI

实现一个最简单的CGI程序,不处理任何客户端数据,只简单返回类似Hello World的页面。在实现CGI程序之前,需要有一个支持CGI的Web Sever运行起来,这里使用BOA Web Sever。具体编译安装方法请参考文章《boa-0.94.13 Web服务器的编译与运行》。

BOA 的CGI配置

只需修改一项,具体如下:ScriptAlias/cgi-bin/ /home/hyx/BOA/cgi-bin/

所有的cgi程序需要放入/home/hyx/BOA/cgi-bin/目录。

假设BOA服务器为http://192.168.181.100:8080

Shell实现

 

#!/bin/shecho Content-type:text/htmlecho echo 
echoechoecho '

Hello World! CGI Shell

' echoecho

安装:cp cgiShellHello/home/hyx/BOA/cgi-bin/

测试:浏览器访问http://192.168.181.100:8080/cgi-bin/cgiShellHello

data-cke-saved-src=/d/file/kf/web/2013-12-09/d9a7c721b6505ad5d510e447d6e656cd.jpg

Hello World! CGI C


C实现

#includeint main(int argc, char** argv){printf(Content-type:text/html);printf();printf();printf();printf(

Hello World! CGI C

);printf();printf();return 0;}

 


data-cke-saved-src=/d/file/kf/web/2013-12-09/8b61449f638657352b8508e8b1dcdbec.jpg

Hello World! CGI C


关键点

上面C和 Shell编程实现的CGI程序,一方面说明了CGI程序可以有任意语言编程实现,另一方面也说明了两点:

一、Web Server与CGI程序通过标准输出交互信息,C语言的printf和Shell的echo都是标准输出接口。

二、上述CGI程序返回的的HTML文件,但是在真正的HTML文件之前都有一句Content-type:text/html。Content-type表明了后续的数据是什么类型,最终到达客户端浏览器时,浏览器根据此项指示决定如何处理后面的数据,如果是HTML就显示HTML页面。具体Content-type还有哪些内容,google&baidu吧。

>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2024 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();