CGI: 通用网关接口
早期的Web服务器,只能响应浏览器发来的HTTP静态资源的请求,并将存储在服务器中的静态资源返回给浏览器。随着Web技术的发展,逐渐出现了动态技术,但是Web服务器并不能够直接运行动态脚本,为了解决Web服务器与外部应用程序(CGI程序)之间数据互通,于是出现了CGI(Common Gateway Interface)通用网关接口。
简单理解,可以认为CGI是Web服务器和运行其上的应用程序进行“交流”的一种约定。
什么是CGI? -----> 一种通信协议
CGI不是一门编程语言。它 是网页的表单和你写的程序之间通信的一种协议。可以用任何语言写一个CGI脚本,这些语言只要能接收输入输出信息,读取环境变量。
所以,几乎所有的编程语言都能写一个CGI脚本,例如:python(把我大python放在第一个!),C,甚至是shell脚本。
CGI脚本的结构
典型的CGI脚本做了如下的事情:
- 读取用户提交表单的信息。
- 处理这些信息(也就是实现业务)。
- 输出,返回html响应(返回处理完的数据)。
Overview:
CGI是一种通信协议,它把用户传递过来的数据转变成一个k-v的字典。
这个字典中不光有用户的数据,还有HTTP协议的参数。它做的就是把数据,组织成一个固定结构形式的数据。方便任何符合CGI协议的程序都可以调用!但是CGI不是负责通信(传输数据)的,通信的话是通过socket,也就是server,例如上面例子中,是通过Apache进行通信。之后调用CGI脚本,把数据转变成符合CGI协议的数据结构,用于后面的数据处理!
Reference:
https://www.cnblogs.com/xueweihan/p/5319893.html
https://www.runoob.com/python/python-cgi.html
https://www.jianshu.com/p/c4dc22699a42