CGI开发文档
- 格式:pdf
- 大小:54.68 KB
- 文档页数:3
试简述cgi工作的工作流程
CGI(Common Gateway Interface)是一种用于服务器端脚本与网页之间进行通信的协议。
下面是CGI工作的基本流程:
1. 客户端通过浏览器发送HTTP请求到服务器。
2. 服务器接收到请求后,解析HTTP请求头和HTTP请求体,提取出请求的URI (Uniform Resource Identifier)和请求方法等信息。
3. 服务器根据URI的扩展名判断请求的资源是否是可执行的脚本文件。
如果是脚本文件,服务器会按照指定的方式启动相应的CGI程序。
4. 服务器通过创建子进程(或线程)的方式执行CGI程序。
子进程从服务器接收到HTTP请求相关信息,然后执行相应的脚本。
5. CGI程序可以获取HTTP请求的参数、cookie等信息,并根据这些信息生成动态的网页内容。
程序可以通过标准输入(stdin)获取HTTP请求的正文信息,通过标准输出(stdout)返回生成的网页内容。
6. CGI程序执行完毕后,将生成的网页内容以HTTP响应的形式返回给服务器。
7. 服务器将CGI程序的输出作为HTTP响应的正文部分,与其他响应头信息一起封装成HTTP响应,并发送给客户端。
8. 客户端浏览器接收到服务器返回的HTTP响应后,根据响应中的内容进行渲染和显示,呈现给用户。
需要注意的是,CGI的主要缺点是每个CGI请求都需要创建一个新的进程或线程,这对服务器的性能有一定的影响。
为了解决这个问题,通常会使用一些性能更好的服务器端脚本技术,如FastCGI、等。
CGI一.基本原理CGI:通用网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接口。
通过CGI接口,Web服务器就能够获取客户端提交的信息,转交给服务器端的CGI程序进行处理,最后返回结果给客户端。
组成CGI通信系统的是两部分:一部分是html页面,就是在用户端浏览器上显示的页面。
另一部分则是运行在服务器上的Cgi程序。
它们之间的通讯方式如下图:服务器和客户端之间的通信,是客户端的浏览器和服务器端的http服务器之间的HTTP 通信,我们只需要知道浏览器请求执行服务器上哪个CGI程序就可以了,其他不必深究细节,因为这些过程不需要程序员去操作。
服务器和CGI程序之间的通讯才是我们关注的。
一般情况下,服务器和CGI程序之间是通过标准输入输出来进行数据传递的,而这个过程需要环境变量的协作方可实现。
1.服务器将URL指向一个应用程序2.服务器为应用程序执行做准备3.应用程序执行,读取标准输入和有关环境变量4.应用程序进行标准输出对于Windows系统而言,还可以通过profile文件进行数据传输(如ini文件),但在这里不做研究。
环境变量在CGI中有着重要的地位!每个CGI程序只能处理一个用户请求,所以在激活一个CGI程序进程时也创建了属于该进程的环境变量。
二.环境变量对于CGI程序来说,它继承了系统的环境变量。
CGI环境变量在CGI程序启动时初始化,在结束时销毁。
当一个CGI程序不是被HTTP服务器调用时,它的环境变量几乎是系统环境变量的复制。
当这个CGI程序被HTTP服务器调用时,它的环境变量就会多了以下关于HTTP服务器、客户端、CGI传输过程等项目。
并且经过了URL编码。
ACCEPT:客户机所支持的MIME类型清单,内容如:”image/gif,image/jpeg”REQUEST_METHOD:它的值一般包括两种:POST和GET,但我们写CGI程序时,最后还要考虑其他的情况。
用c语言写cgi程序(1)代码用这个:/question/28759329.html再贴一下:view plaincopy to clipboardprint?1. #include <stdio.h>2. #include <stdlib.h>3. i nt main(void)4. {5. c har *data;6. l ong m,n;7. p rintf("%s%c%c ","Content-Type:text/html;charset=gb2312",13,10);8. p rintf("<TITLE>乘法结果< /TITLE > ");9. p rintf("<H3>乘法结果< /H3 > ");10. data = getenv("QUERY_STRING");11. if(data == NULL)12. printf("<P>错误!数据没有被输入或者数据传输有问题");13. else if(sscanf(data,"m=%ld&n=%ld",&m,&n)!=2)14. printf("<P>错误!输入数据非法。
表单中输入的必须是数字。
");15. else16. printf("<P>%ld和%ld的成绩是:%ld。
",m,n,m*n);17. return 0;18. }19. 编译运行出.exe的文件。
是否要把后缀名改为.cgi?20. 此程序的表单如下:21. <FORM ACTION="/cgi-bin/mult.cgi">22. <P>请在下面填入乘数和被乘数,按下确定后可以看到结果。
cgic: 为C语言编写CGI的C函数库2010-09-14 13:43:18分类:C/C++CGIC介绍一般的Unix系统都支持ANSIC,增加相应的库函数(和相应的h文件)就可以实现CGI。
在此我向大家推荐一个用于CGI编程的ANSIC库:cgic。
cgic是用来生成基于CGI的WWW应用程序的C语言函数库,它有以下功能:*对数据进行语法分析*接收以GET和PSOT两种方式发送的数据*把FORM中的不同域连接成连续的串*为检索FORM数据而提供字符串,整数,浮点以及单项和多项选择功能*为数字字段提供边界检测*把CGI环境变量加载到非空的C串中*为调试而捕捉CGI状态*提供相对安全的系统调用功能用一般ANSI C或C++编译器就可以编译cgic程序,不过与通常C程序不同的是,用cgic写的源码其主函数是cgiMain(),而不是通常的main()。
cgic的函数库会自动把cgiMain连接到相应的main()上去。
--------------------------------------------------------------------------------写CGIC程序Note: 所有的cgic应用程序必须连接cgic.c.用cgimain()替代main() 必须包含: #include"cgic.h."基本结构cgictest.c:int cgiMain() {#if DEBUGcgiReadEnvironment("/path/to/capcgi.dat");#endifcgiHeaderContentType("text/html");fprintf(cgiOut, "<HTML><HEAD>\n");fprintf(cgiOut, "<TITLE>cgic test</TITLE></HEAD>\n"):fprintf(cgiOut, "<BODY><H1>cgic test</H1>\n");Name();Address();Hungry();Temperature();Frogs();Color();Flavors();NonExButtons();RadioButtons();fprintf(cgiOut, "</BODY></HTML>\n");return 0;}capture输出标头cgiHeaderContentType()在输出文挡之前简要说明MIME内型,如 "text/html"。
敬告:其实当前的cgic版本已经有上传的功能了,可以看看自带的test文件用C语言编写cgi程序的话,多半会用到CGIC。
这是个非常流行的库,遇到文件上传之类的应用更是离不开它。
官方页面及下载地址为:/cgic/#obtain不少网站都有文件上传的功能,本文展示如何用CGIC库编写文件上传的服务端程序,最后给出一段简单的HTML代码,供大家测试使用。
下载: upload.c[cpp:nogutter]view plaincopyprint?#include<stdio.h>#include<string.h>#include<unistd.h>#include<fcntl.h>#include<sys/stat.h>#include"cgic.h"#define BufferLen 1024int cgiMain(void){cgiFilePtr file;int targetFile;mode_t mode;char name[128];char fileNameOnServer[64];char contentType[1024];char buffer[BufferLen];char *tmpStr=NULL;int size;int got,t;cgiHeaderContentType("text/html");//取得html页面中file元素的值,应该是文件在客户机上的路径名if (cgiFormFileName("file", name, sizeof(name)) !=cgiFormSuccess) {fprintf(stderr,"could not retrieve filename/n");goto FAIL;}cgiFormFileSize("file", &size);//取得文件类型,不过本例中并未使用cgiFormFileContentType("file", contentType, sizeof(contentType));//目前文件存在于系统临时文件夹中,通常为/tmp,通过该命令打开临时文件。
CGIC简明教程目录(CGI篇)CGIC简明教程目录本系列的目的是演示如何使用C语言的CGI库“CGIC”完成Web开发的各种要求。
基础知识* 1: 使用CGIC的基本思路* 2: 获取Get请求字符串* 3: 反转义* 4: 获取请求中的参数值进阶训练* 用CGIC实现文件上传CGIC简明教程1:使用CGIC的基本思路C语言编程是一项复杂且容易出错的工作,所以在完成复杂任务时,一定要选择合适的库。
对于用C语言编写CGI程序则更是如此。
CGIC是非常优秀的C语言CGI库函数。
其下载地址为:/cgic/#obtain,现在的版本号是2.05。
本站从今天开始,将逐步介绍如何使用CGIC完成各种操作,也可以说是一个Tutorial。
(注:本系列涉及的编程环境都是Linux,Windows用户需要对用到的操作系统命令稍作修改)本文纲要:CGIC的安装、测试安装、使用CGIC的基本思路;1) CGIC的下载安装从上面提供的官方网址下载了CGIC库之后,解开压缩包,里面有大约10个文件,有用的是:cgic.h:头文件;cgic.c:CGIC的源代码文件;cgictest.c:CGIC库的作者提供的一个CGI程序例子;capture.c:用于调试CGI程序的工具;Makefile:安装CGIC的脚本文件;可以看到,整个库实际上就是cgic.c一个文件,可以说是非常的精炼。
我们可以把CGIC安装为操作系统的一个动态链接库,这样我们每次编译的时候,就不需要有cgic.c这个源文件了。
但是由于需要(以后将会看到),我们将修改cgic.c代码,所以我们不把它安装进系统。
每次编译的时候,只要把cgic.c和cgic.h放到当前文件夹就好了。
2) 测试安装在开始编写你自己的CGI程序之前,一定要先走通他的例子程序,免得后来程序出错的时候还不知道是配置有问题,还是你的程序代码有问题。
我们用他自带cgictest.c来实现自己的第一个C语言CGI程序。
cgi标准CGI(通用网关接口,Common Gateway Interface)是一种用于在Web服务器与外部程序之间传递信息的标准协议。
它允许Web服务器调用外部程序处理客户端请求,将动态生成的内容发送回客户端浏览器。
CGI 标准定义了Web服务器和外部程序之间的通信规范,为不同类型的Web服务器和编程语言提供了一致的接口。
1. 起源和背景CGI的概念最早在1993年由NCSA(National Center for Supercomputing Applications)提出,它是一种连接Web服务器与应用程序的接口标准。
在早期Web发展阶段,静态HTML页面已经无法满足用户对交互性和动态内容的需求,因此需要一种机制来实现动态生成的Web页面。
2. CGI的工作原理CGI的工作原理相对简单,它建立在HTTP协议之上。
当Web服务器接收到一个带有CGI请求的HTTP请求时,它会调用相应的CGI程序来处理该请求。
CGI程序负责生成动态内容,并将结果返回给Web服务器,最终由Web服务器发送给客户端。
要实现CGI,需要以下步骤:•HTTP请求接收:当Web服务器接收到一个HTTP请求时,它会检查请求的URL是否匹配CGI脚本的路径。
•环境变量设置:Web服务器会将请求的信息(如请求方法、URL、查询参数等)以环境变量的形式传递给CGI程序。
CGI程序可以通过读取这些环境变量来获取请求的详细信息。
•标准输入输出:CGI程序通过标准输入(stdin)获取来自Web服务器的输入,通过标准输出(stdout)将生成的内容返回给Web服务器。
错误信息通常通过标准错误(stderr)输出。
•HTTP响应构建:CGI程序生成动态内容后,将其发送到标准输出。
Web服务器接收到输出后,将其包装成HTTP响应,并将响应发送回客户端。
3. CGI标准的关键特性3.1 文件位置CGI程序通常存储在特定的目录中,例如cgi-bin。
Web前端开发工作交接文档一、项目总体逻辑本次项目主要是网站开发。
开发中使用的语言包括html,css,css3。
使用到的前端框架为Vue.js+jquery。
在整个开发过程中,主要是以.html和.css为页面展示,.js为逻辑以及接口的调用。
具体代码含义,见于开发中注释(正在注释中,页面较多)。
代码运行可以直接在vscode里用live server插件在需要运行的页面右键然后”Open with live server”目前工作完成进度:目前工作的基本框架已经完成。
主页面、产品展示部分页面等页面的前端设计已经完成。
二、各文件具体含义说明图 1:基本的项目结构.vscode 可忽略,是vscode软件自带文件夹css目录,为页面的样式文件。
fonts目录,为此次开发所需使用的字体文件。
images目录,为此次开发所需的图片文件。
js目录,为项目的js文件,逻辑和接口调用都在里。
pages目录,为项目的展示页面,大部分页面的展示都在此文件夹。
plugins目录,为项目的插件所在地。
enterprise.html,为项目的专业版。
index.html,为项目的首页。
login.html,为项目的登录页三、各文件具体含义说明(1)pages文件夹图 2:pages文件夹里面的内容Act文件夹: 1.askforprice.html 主要是IoT物联网市场模板,暂时未调用接口只有页面Cart文件夹:主要是购物车模块1.cartbuy.html 是用来选择购买时支付的选择,选择支付宝支付或微信支付2.buycode.html是上一文件选择购买后跳转的页面,跳转到微信支付或支付宝支付3.cart.html是购物车页面,有两个模块,自营类和撮合类,商品加入购物车后,可以通过下单按钮下单,通过点击顶部购物车按钮跳转到这个页面,在店铺详情页面通过点击侧边栏的购物车按钮跳转这个页面4.ordersubmit.html是下单页面,购物车下单后跳转这个页面,主要是用来提交订单的5.orderpay.html支付页面,用来支付订单,在下单的时候会弹出是否支付按钮,还有订单列表在出现支付按钮,在点击支付按钮会跳转这个页面6.neworder.html询价单下单页面,作用与ordersubmit.html类似,不过是通过询价单里“生成采购单”跳转到此页面Civil文件夹:主要是商品模块和江苏版1.detail.html是商品详细页面,主要是用来展示商品的详细信息,比如价格,库存,商品图片,商品介绍,评价,售后保障等。
一、Web文档的三种基本形式1、静态文档:是一个存储于Web服务器的文件,静态文档由作者在写作时决定文档内容,它的内容不会变化。
是一种排版语言,主要优点,是简单、可靠、性能好;主要缺点,是灵活性差,当信息变化时,必须重新设计文档。
2、动态文档:它在浏览器访问Web服务器时创建,没有预先定义的格式。
内容总是变化的,每次访问都要创建新文档。
可以用来显示天气预报、股巿行情等时效性很强的信息。
主要缺点创建费用较高、访问的时间较长、且浏览器取得一个复制的文档后不会再改变。
3、活动文档:它不完全由服务器产生,一个活动文档包括一个计算和显示的程序。
只要用户程序保持运行,该文档可以不断地变化。
活动文档本身不包含运行所需要的软件,大部分支持软件在浏览器上。
主要缺点,是创建和运行这类文档费用高,安全性差。
二、静态文档与动态文档的实现html是编制网页的基本语言,但它只能用于静态的网页。
当今的web已经不再是早期的静态信息发布平台,它已被赋以更丰富的内涵。
现在,我们不仅需要web提供所需的信息,还需要提供可个性化搜索的功能,可以收发email,可以进行网上销售,可以从事电子商务等等。
为实现以上功能必须使用更新的网络编程技术制作动态网页。
所谓动态,指的是,按照访问者的不同需要,对访问者输入的信息作出不同的响应,提供响应的信息。
动态网页技术的原理是:使用不同技术编写的动态页面保存在web服务器内,当客户端用户向web服务器发出访问动态页面的请求时,web服务器将根据用户所访问页面的后缀名确定该页面所使用的网络编程技术,然后把该页面提交给相应的解释引擎;解释引擎扫描整个页面找到特定的定界符,并执行位于定界符内的脚本代码以实现不同的功能,如访问数据库,发送电子邮件,执行算术或逻辑运算等,最后把执行结果返回web服务器;最终,web服务器把解释引擎的执行结果连同页面上的html内容以及各种客户端脚本一同传送到客户端。
虽然,客户端用户所接收到的页面与传统页面并没有任何区别,但是,实际上页面内容已经经过了服务端处理,完成了动态的个性化设置。
⼀、CGI概述1.CGI概念 CGI即通⽤⽹关接⼝(Common Gateway Interface),它是⼀个WWW服务器主机对外服务的标准接⼝。
⼀般来说,⼀个CGI接⼝的功能就是在超⽂本⽂件和服务器主机应⽤程序间传递信息。
2.CGI程序语⾔ 事实上,任何⼀种程序语⾔,只要能在服务器主机上利⽤CGI接⼝来编写应⽤程序,都可以叫作CGI程序语⾔。
⽬前最为流⾏的CGI程序语⾔有四种:C、Shell、Perl和Visual Basic,其它⼀些语⾔也有许多⼈在⽤,如TCL、Frotran及AppleScript等。
下⽂我们将介绍⽤C语⾔编写CGI的⽅法。
3.CGI程序的执⾏ CGI程序⼀般是个可执⾏程序。
编译好的CGI程序⼀般要集中放在⼀个⽬录下。
具体存放的位置随操作系统的不同⽽不同,例如UNIX系统下是放在cgi-bin⼦⽬录下,⽽在Windows操作下(注意,这⾥不包括NT4.0)以Webstar或Website作WWW服务器,CGI程序都放在cgi-win下。
CGI程序的执⾏⼀般有两种调⽤⽅式:⼀种是通过URL直接调⽤,如:/cgi-win/cgi.exe,在Netscape的URL栏⾥直接写⼊上述描述就可以调⽤该程序:另⼀种⽅式,也是主要的⽅式是通过交互式主页⾥的FORM栏调⽤,通常都是⽤户在填完⼀张表后按确认按钮启动CGI程序。
4.CGI⼯作的主要流程 CGI⼯作的主要流程是:1.通过HTML获取⽤户输⼊的信息;2.将⽤户输⼊的信息传给服务器主机应⽤程序(如数据库查询);3.将服务器处理结果通过HTML⽂件返回给⽤户。
⼆、Windows平台下CGI的⼯作原理 CGI主要的功能不外乎在服务器应⽤程序和客户之间传递信息。
我们知道,通常CGI应⽤在服务器和客户端传递信息是通过输⼊输出流来实现的,如UNIX平台下的CGI,通过读取输⼊流Scanf来获取⽤户输⼊,读取输出流printf向⽤户输出结果。