boa-0.94.13:Hello CGI

原创 2013年12月04日 22:24:06

CGI是什么

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

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

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

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

CGI程序

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

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

Hello CGI

         实现一个最简单的CGI程序,不处理任何客户端数据,只简单返回类似Hello World的页面。在实现CGI程序之前,需要有一个支持CGIWeb 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/sh

echo "Content-type:text/html"

echo ""

echo "<html>"

echo"<head><title>cgiShellHello</title></head>"

echo "<body>"

echo '<h1>Hello World! <fontcolor="red">"CGI Shell"</font>  </h1>'

echo "</body>"

echo "</html>"

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

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

<html>

<head><title>cgiCHello.c</title></head>

<body>

<h1>Hello World! <fontcolor="red">"CGI C"</font> </h1>

</body>

</html>


C实现

#include<stdio.h>

int main(int argc, char** argv)

{

printf("Content-type:text/html\n\n");

printf("<html>\n");

printf("<head><title>cgiCHello.c</title></head>\n");

printf("<body>\n");

printf("<h1>Hello World! <font color=\"blue\">\"CGI C\"</font>  </h1>\n");

printf("</body>\n");

printf("</html>\n");

return 0;

}


编译:gcc  –o cgiCHello cgiCHello.c

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

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

<html>

<head><title>cgiCHello.c</title></head>

<body>

<h1>Hello World! <fontcolor="blue">"CGI C"</font> </h1>

</body>

</html>


关键点

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

一、Web ServerCGI程序通过标准输出交互信息,C语言的printfShellecho都是标准输出接口。

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

linux下CGIC/CGI和BOA开发小记

CGI网页用于配置系统参数,减少了客户直接配置内核文件的复杂过程
  • u013794365
  • u013794365
  • 2016年08月09日 15:31
  • 3187

boa cgi html

随着Internet技术的兴起,在嵌入式设备的管理与交互中,基于Web方式的应用成为目前的主流,这种程序结构也就是大家非常熟悉的B/S结构,即在嵌入式设备上运行一个支持脚本或CGI功能的Web服务器,...
  • jemofh159
  • jemofh159
  • 2012年08月29日 13:16
  • 8958

boa服务移植 cgi的使用

一.交叉编译boa-0.94.14rc21:    1.1 解压boa_0.94.14rc21.orig.tar.gz,进入boa_0.94.14rc21    执行:    ./configure ...
  • zhangboyj
  • zhangboyj
  • 2011年01月19日 17:53
  • 2899

boa-0.94.13:CGI中文问题

CGI 为什么中文乱码
  • handyhuang
  • handyhuang
  • 2013年12月14日 12:56
  • 3077

boa如何调用cgi

我们可以用DreamWeaver来设计我们的网页,一般的情况下我们为动态的网页,就是说不是仅仅浏览,可以递交数据和查询我们要的东西,在嵌入式里面我是通过boa的web服务来调用cgi程序来实现交互的,...
  • hushup
  • hushup
  • 2014年04月30日 17:04
  • 1507

嵌入式Web服务器BOA和CGI编程开发

一  嵌入式WEB服务器常见的有lighttpd,shttpd,thttpd,boa,mathopd,minihttpd,appweb,goahead 二  嵌入式Web服务器BOA的移植方法  ...
  • tianmo2010
  • tianmo2010
  • 2011年09月10日 13:11
  • 6131

boa.conf基本配置详解

Port 80 User root Group root ErrorLog /dev/console AccessLog /dev/null ServerName friendly-arm Docum...
  • xxgxgx
  • xxgxgx
  • 2016年04月01日 10:21
  • 1820

linux下的webserver BOA及CGIC库的使用指南(转帖)

转帖:http://blog.csdn.net/hurtmanzc/archive/2007/08/24/1757747.aspx   我把网页挂载到nfs 下面的文件中(需要新建一个文件www ...
  • chinazjf
  • chinazjf
  • 2013年03月13日 23:33
  • 1563

CGI 学习笔记 HelloCGI

前言 对于设计网页搞web应用的工程师来说CGI技术算是一门非常古老的技术了!为什么研究它,古老的技术一般较现在流行的技术简单,例如CGI较asp或php等等。最近一直迷恋嵌入式web技术,就是使用R...
  • xukai871105
  • xukai871105
  • 2013年01月27日 20:06
  • 2746

boa-0.94.13:CGI中文问题

CGI 为什么中文乱码
  • handyhuang
  • handyhuang
  • 2013年12月14日 12:56
  • 3077
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:boa-0.94.13:Hello CGI
举报原因:
原因补充:

(最多只允许输入30个字)