CGI(Common Gateway Interface)
WWW技术中最重要的技术之一,有着不可替代的重要地位。 CGI是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。(以上内容摘自百度百科)
CGI简单的理解就是一个浏览器和服务器传递信息的一个接口规范。CGI并不是一种编程语言,而是一个规范标准。有人认为JavaScript功能强大到取代CGI,JavaScrpit和CGI是不同的,JavaScript是在客户端运行的脚本,而通过CGI,用户可以在服务器运行一些程序。
网络中会经常使用<FORM>标签来进行值的传递。
<form method=get action="cgi-bin/demo-cgi.cgi"> </form>
如上代码所示,method 有get 和 post 两种不同的方式。若不标注,get是缺省值。
GET
当数据被传送到服务器端后,数据被保存在服务器上 QUERY_STRING 的环境变量中。只要读取环境变量就可以了。不同的语言有不同的函数,如C中,可以用库函数getenv()读取()(stdlib.h)
POST
post method 不是通过 QUERY_STRING 变量传递的,而是通过stdin(标准输入)传递的。
更详细的可以参考下这个帖子 LINUX CGI 编程
首先在开发板的web目录里新建一个cgi-bin的文件夹。
在Ubuntu上新建 demo_cgi.c 编辑如下:
#include <stdio.h> int main() { printf("Content-type:text/html\n\n"); printf("<html>\n<head><title>CGI DEMO</title></head>\n"); printf("<body>\n<center> SINLINX SIN210 : WWW.SINLINX.COM</center>\n<body>\n</html>"); return 0; }
保存demo_cgi.c文件。
执行下面指令
# arm-linux-gcc -o demo_cgi.cgi demo_cgi.c
将生成的demo_cgi.cgi 文件复制到开发板的 /web/cgi-bin/ 文件夹中。
在开发板的 web/ 文件夹中新建一个 demo_cgi.html 代码如下:
<html> <head> <title> DEMO CGI </title> </head> <body> <center><a href="cgi-bin/demo_cgi.cgi"> HelloWii SIN210:www.sinlinx.com </a> <center> </body> </html>
。
在浏览器中输入 http://192.168.1.20/demo_cgi.html 即可出现如下界面(192.168.1.20 是笔者的开发板IP)
点击上面的文字,即可执行cgi-bin中的程序,如下所示:
至此,可以通过浏览器执行服务器上的程序了。
最后非常感谢 SINLINX 公司提供的sin210开发板。