20.4 CGI
标准网关接口(Common Gateway Interface, CGI)
如图所示:
客户端向Web服务器提交请求(GET方式或POST方式),Web服务器接到请求后,与CGI应用程序交互,CGI应用程序生成动态的HTML页面返回到Web服务器,Web服务器再把这个HTML页面返回给客户端。(本人大致理解过程)
不过典型的Web应用产品已经不再使用CGI了,本人好奇现在普遍使用什么,这个估计只有以后慢慢了解了。
20.4.2 CGI应用程序
与典型应用程序区别在于,输入、输出及用户和计算机交互。
CGI程序的输入是从Web客户端获得的,其输出也将会返回到Web客户端,返回的数据必须是具有一系列有效头文件的HTML(HTML本人理解,但是有效头文件是什么?)。还有一点就是,用户不能与脚本进行交互(是不是不能像普通程序那样,在powers等终端输入python XXX.py进行交互?)。所有交互都发生在Web客户端(用户的行为)、Web服务器端和CGI应用程序间。
20.4.3 cgi模块
cgi模块中有一个主要类,即FieldStorage类。在CGI脚本开始时,这个类被实例化,读取Web客户端提交的用户输入。这个类创建一个类似字典的对象,它包含了一些系列键值对,键就是通过表单传入的表单条目的名字,而值则包括相应的数据。这些值本身可以是FieldStorage对象、MiniFieldStorage对象或包含这些对象的列表。
因为缺乏网络的相关知识,本节整体比较晦涩难懂,只能通过后面的程序例子慢慢体会了,能把大部分内容慢慢理解。