打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
WEB那点事 -- (一)CGI 是什么玩意

 

2016年05月25日 10:51:36

入行五六年了,很少提笔写整块的博客,近来越发感觉到了一定的阶段,需要去整理一些文字已慰自己逝去的青春。

WEB,不就是那点事吗?

相信很多同学都知道,Apache、Tomacat,IIS等web服务器在运行的时候,会调用PHP,Java、.Net 等应用程序服务来执行具体的对数据库的相关操作。

那么他们直接具体是什么关系呢?

又跟CGI有什么关系呢?

================================================================================

先来看看CGI是什么玩意。

CGI:通用网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接口。

通过CGI接口,Web服务器就能够获取客户端提交的信息,转交给服务器端的CGI程序进行处理,最后返回结果给客户端。

组成CGI通信系统的是两部分:一部分是html页面,就是在用户端浏览器上显示的页面。另一部分则是运行在服务器上的Cgi程序。

它们之间的通讯方式如下图:


那么这里的CGI程序是个什么概念呢?

CGI程序就是真正的被服务器(如Apache)调用的来处理用户发送过来的数据的程序。所谓CGI程序就是按照CGI接口规范编写的能够处理用户通过浏览器发送到服务器的数据的

一个程序。

首先,这个程序必须要按照CGI接口规范来写。

前面已经说过了,CGI的学名就是通用网关接口,我们知道网关的概念是联通一个网络和另一个网络的通道,那么这里我个人的理解就

是CGI这个网关,是连通web服务器这个大容器和服务器上其它资源(如:数据库、文件)的一个通道。为什么需要网关进行连接呢,我们知道根据web服务器的设计规范来说,

web服务器只能操作它根目录下的相关文件(如:Apache服务器默认只能操作/htdocs 这个目录下的文件)。那么对于web服务器以外的资源,如果服务器想要操作怎么办呢?

就需要用到CGI这个接口,这个接口定义了web服务器在操作其权限范围以外的资源时需要遵循的规范及数据传递的方式。

有了上面这个理解,我们知道,CGI其实是一个接口规范,并且按照CGI接口规范开发的程序都可以叫做CGI程序。那么可以用来开发CGI的程序有哪些呢?C、Java、PHP、

Perl、Asp、.Net等。

用Perl编写的CGI程序后缀为:.pl;Python编写的CGI程序后缀为:.py;而C编写的CGI程序后缀为:.cgi,如果在win下编译出来的是.exe,最好将它重命名为.cgi。

这些都是为了HTTP服务能够识别并调用它们。


其实最早的时候CGI程序是用C语言来编写的,有兴趣的同学可以参考这篇文章,很不错http://blog.csdn.net/clearver/article/details/5209332。

后来随着互联网的发展,逐步又有了丰富多彩的各种新的开发语言。

那么我们从浏览器点击一个按钮向服务器发起请求这个过程是怎么来处理的呢?

回想一下,我们在表单中有一个叫做Action的属性,<Form action="xxx">,首先这个请求会被发送到web服务器,然后web服务器根据你发过来URL请求找到相对应的CGI程

序(如:login.php)。然后web服务器会把数据按照CGI的接口标准传递给相应的CGI程序,对应的CGI程序处理过请求后,会返回数据,或者文件(一般是HTMl)给服务器,服务

器会把结果返回给浏览器,浏览器负责呈现用户请求的处理结果。

这样一个请求就算完成了,其实这个过程和我理解的web请求过程没有太大的区别,只是这里我在阐述CGI这个概念。

如果有兴趣,可以用C来实现一个CGI程序。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
一篇文章带你看懂各类网关接口(GI)
WSGI,uWSGI和uwsgi区别详解
Web网站安全(Apache安全)
我所了解的cgi
FastCGI与spawn-fcg简介
计算机常用英语术语
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服