`
hulianwang2014
  • 浏览: 726133 次
文章分类
社区版块
存档分类
最新评论
  • bcworld: 排版成这样,一点看的欲望都没有了
    jfinal

CGI 学习笔记 HelloCGI

 
阅读更多

前言

对于设计网页搞web应用的工程师来说CGI技术是一门非常古老的技术了!为什么研究它,古老的技术一般较现在流行的技术简单,例如CGI较ASP或PHP等等。最近一直迷恋嵌入式web技术,想使用RAM和ROM较小的MCU做网页服务器,这些MCU可能是AVR也可能是STM32。网上的资料也不少,但是很多问题都没有讲透。我借博客把资料梳理一下!

嵌入式WEB服务技术较真正的WEB技术有以下区别。(非专业WEB人员,专业词汇说的不对请指正)

2014年1月回顾,发现自己在胡说八道

【1】.使用CGI来实现动态网页,而不是ASP或PHP。

【2】.表单多使用GET方法,而WEB多使用POST方法,嵌入式WEB通过URL传递数据。

本文的目标就是写一个最简单的CGI程序,并在网页中运行。


IIS设置

由于CGI为可执行文件,所有还需要对IIS做适当的设置。具体的设置如图1所示。


图1 IIS设置


编写Hello World程序

学习一门编程类的技术,最简单的方法莫过与实现Hello World。我参考了Getting Started with CGI Programming in C代码,并做了适当的修改。具体代码如下:

#include <stdio.h>
int main(void) {
  printf("Content-Type: text/plain;charset=us-ascii\n\n");
  printf("Hello world\r\n");
  return 0;
}

在VS2010中编译了该代码,生成了某个exe文件,例如TestCGI.exe文件。接着把TestCGI.exe文件重命名为TestCGI.cgi文件,并复制到web目录即可。第一条printf语句输出HTTP响应头,HTTP响应头和HTTP负载内容之间必须包含一个空行,通过多次实验发现\n\n可以,\n也可以,但是\r\n却不可以


图2 HTTP响应 HEX格式

耐心分析过后,发送在发送\n时,CIG程序自动添加了一个\r。即为图中的0x0d和0x0A。若存在\n\n,那么相当于连续打印两个空行。在HTTP请求和响应格式中,请求头和内容之间只包含一空行即可。

其中Content指内容类型,它包含很多参数,具体可以参考【维基百科相关网页】。

text/plaint 表示纯文本

charset=us-ascii 表示定义字符集


运行结果

在浏览器中输入http://localhost/TestCGI.cgi/或者本机的局域网IP地址,即可在网页中看到Hello World。

请注意,URL的最后为/。


图 运行结果


从这些代码和操作步骤来看,CGI技术虽然非常古老,但是也非常的简单。


后续计划

使用GET方法传递参数,利用CGI程序实现一个乘法运算。



分享到:
评论

相关推荐

    CGI编程完全手册(个人学习笔记

    ### CGI编程完全手册知识点梳理 #### 一、CGI基本原理 - **定义**:CGI,即通用网关接口(Common Gateway Interface),是Web服务器提供信息服务的一种标准接口。 - **功能**:允许Web服务器获取客户端提交的信息,并...

    SSH框架学习笔记

    这篇笔记将主要介绍SSH中的Struts框架,帮助初学者理解其核心概念和工作流程。 Struts是一个基于MVC(Model-View-Controller)设计模式的Java web应用框架,主要负责视图(View)和控制器(Controller)部分。在Web...

    CGI学习文档

    这篇“CGI学习文档”详细介绍了从零开始学习CGI的全过程,包括基础概念、工作原理、实现方法以及实践心得,对于初学者来说是一份宝贵的资料。 一、CGI基础知识 CGI主要扮演的是一个中介角色,当用户通过浏览器发送...

    C语言CGI的学习资料

    **C语言CGI(Common Gateway Interface)学习指南** CGI,即通用网关接口,是一种标准,用于将Web服务器与各种脚本语言或应用程序连接起来,以动态生成网页内容。在C语言中实现CGI,可以让你创建更复杂的Web应用...

    学习笔记文档

    ### Java Web 学习笔记:Servlet 的核心概念与应用 #### 一、Servlet 概述 Servlet 是 Java Web 开发中的重要组成部分,主要用于处理客户端发送到服务器端的 HTTP 请求,并生成响应结果返回给客户端。通过学习 ...

    CGI编程指南读书笔记

    CGI编程指南读书笔记CGI编程指南读书笔记CGI编程指南读书笔记

    qt访问cgi的方法与cgi实例

    **Qt 访问 CGI 的方法与 CGI 实例** 在 IT 领域,尤其是 Web 开发中,CGI(Common Gateway Interface,通用网关接口)是一种标准,它允许 Web 服务器执行外部应用程序并返回结果给客户端。Qt 是一个强大的 C++ 库,...

    CGI编程学习简介对初学者了解CGI概念有用

    ### CGI编程基础概念详解 #### 一、CGI(Common Gateway Interface)概述 CGI,全称为Common Gateway Interface,...通过深入学习CGI编程,不仅可以提高自身的技术水平,还能在实际项目中灵活运用,解决复杂的问题。

    CGI编程指南.pdf

    学习如何根据不同的请求方法获取数据、处理数据以及如何组织CGI程序的结构(包括初始化、处理请求和终止程序),是掌握CGI编程的基础。 ### HTML表单和CGI程序 HTML表单是用户与Web页面交互的重要方式之一。表单中...

    BOA+CGI测试例程.rar_CGI arm_arm cgi_boa_boa cgi_cgi boa

    CGI(Common Gateway Interface,通用网关接口)是一种在Web服务器上执行外部应用程序的标准协议,使得...开发者可以通过学习和实践这个例子,掌握如何将简单的嵌入式硬件功能与Web服务器相结合,实现远程控制和监控。

    cgi-util C语言写CGI库

    CGI(Common Gateway Interface,通用网关接口)是一种标准,允许Web服务器与外部应用程序交互,以处理动态内容。CGI库则是用特定编程语言编写的,简化了开发CGI程序的过程。在这个案例中,我们讨论的是`cgi-util`,...

    精通CGI编程 CGI

    在深入学习CGI编程的过程中,你将接触到许多实际应用案例,例如表单处理、登录验证、数据库交互等。此外,还可以结合其他技术,如模板引擎(例如Perl的HTML::Template或Python的Mako),来提高代码的可维护性和...

    cgi用户登录验证源码和例子

    CGI(Common Gateway Interface,通用网关接口)是一种标准,允许Web服务器与外部应用程序交互,以处理动态内容。在这个特定的资源包中,你将找到一个用C++编写的CGI用户登录验证程序,适用于Windows和基于ARM架构的...

    Strtus2学习笔记

    ### Struts2学习笔记知识点梳理 #### 一、前言及背景 - **Struts2简介**:Struts2是一个基于MVC模式的开源Web应用框架,它继承了Struts1的一些特性,并在此基础上进行了很多改进,使得开发更加便捷高效。 - **学习...

    cgi实现下载文件

    CGI(Common Gateway Interface,通用网关接口)是一种标准,允许Web服务器与外部应用程序交互,以处理动态内容,如表单提交、文件下载等。在这个场景中,我们将探讨如何使用CGI来实现在网页上提供文件下载的功能。 ...

    CGI-plus下载

    CGI(Common Gateway Interface)是一种标准的Web服务器接口,允许Web服务器与外部程序进行交互,以动态...通过深入学习和熟练掌握CGI-plus,IT从业者可以提升他们的系统管理技能,提高工作效率,并确保数据的安全性。

    cgi.rar_CGI Programming_cgi_html cgi_web cgi_world

    在压缩包内的“cgi”文件可能包含了CGI编程的源代码示例、教程文档或者配置文件,帮助学习者理解和实践CGI编程。这些资源对于理解CGI的工作原理、编写自己的CGI程序以及调试现有CGI应用都非常有价值。 总的来说,...

    web开发技术原理学习笔记

    Web开发技术原理学习笔记主要涵盖了HTTP应用、HTTP客户端和服务器端开发、HTML基础及高级语法、脚本语言和客户端脚本应用,以及服务器端CGI程序。以下是对这些知识点的详细解释: 1. **HTTP应用**: - HTTP客户...

    搭建lighttpd+cgi的代码包

    【搭建lighttpd+cgi的代码包】 在Web服务器领域,lighttpd是一个轻量级且高效的HTTP服务器,因其低内存占用和高速度而受到欢迎。CGI(Common Gateway Interface)则是一种标准,允许Web服务器执行外部程序并返回...

    C语言编写的CGI开发库(linux)

    CGI(Common Gateway Interface,通用网关接口)是一种在Web服务器上运行外部程序的标准协议,使得动态网页生成成为可能。C语言编写的CGI库为...通过学习和掌握这个库,你可以更高效地开发出动态、安全的Web服务。

Global site tag (gtag.js) - Google Analytics