通用网关接口
通用网关接口 (CGI) 是中间件,Web 服务器通过它执行来自外部程序的用户请求。这些程序称为 CGI 程序。CGI 为程序与 HTTP(超文本传输协议)服务器交互提供了框架。
通过表单提交的用户请求会被传递给应用程序程序,该程序处理数据并可能返回确认消息。这个过程称为通用网关接口。
概述
定义
通用网关接口是万维网联盟与外部程序之间的标准接口。
CGI(通用网关接口)是一个在 URL 中指定的可执行程序,它将参数传递给 CGI 程序。该程序由 HTTP 服务器处理,并通过标准输入访问环境变量。输出(例如 HTML 元素)被传递回 HTTP 服务器,这就是 CGI 程序的处理过程。
当用户使用指向服务器的 URL 提交 Web 请求时,服务器会解析 URL。它会在预配置的目录(称为 CGI 目录)中搜索文件名,并将文件或错误消息显示回用户。
CGI 程序可以通过命令行参数访问。服务器端根据 CGI 规范调用一个程序,称为 CGI 脚本。CGI 程序可以用 C、PERL、Visual Basic、shell 脚本、C++ 等语言编写。服务器以 URL 的形式接收用户请求,并将其识别为 CGI 脚本。脚本被处理,并将输出作为 Web 客户端传递回用户。环境变量在编写 CGI 程序中起着至关重要的作用。
CGI 应用
交互式应用程序使用 CGI 将用户的输入收集到服务器。让我们讨论以下应用程序:
表单
表单包含 CGI 程序和 HTML。表单是用于收集静态数据和接受由 CGI 程序处理的命令的可视化表示。
HTML 表单包含“提交”和“操作”按钮,它们将 URL 作为查询字符串推送到服务器。服务器处理后,它会为用户生成可视化 HTML 页面。
表单包含复选框、文本字段、单选按钮、按钮和选择列表。
网关
网关脚本或程序以 SQL 查询的形式访问数据库信息。在数据库中,CGI 程序充当网关,用于处理用户查询并显示或检索虚拟或动态信息。网关程序还可以与 Archie、NNTP 或 WAIS 交互。
虚拟或动态文档
用户以图像、音频、文本或 HTML 的形式请求创建虚拟文档。虚拟文档结合了网关、表单和图形。
例如:用户在网上搜索一幅画,服务器会处理该请求,可能会显示错误信息,或者显示图像以及其他图像处理选项(如亮度、大小或对比度)给用户。CGI 程序可以重写另一个程序来修改图像,并将生成的图片显示给用户。
例如:Lycos 浏览用户请求的文档,并将超文本文档结果与用户匹配。另一个例子是字典,用户搜索英语单词,并返回等效的德语单词以及图像。
通用网关接口的其他应用包括世界地图、字典、博客和涂色书。
CGI 特性
CGI 是一个简单的交互式 shell 脚本或应用程序。
CGI 使用一组明确定义的指令执行。
CGI 脚本主要用 Perl、C 等语言编写。应用程序可以用任何语言编写,例如 Java、Python、PERL、C++、C 等。
HTML 也可以用于 CGI 作为技术的界面。
执行高级功能时,CGI 比 Java 更容易。
CGI 包含可重用的代码段。
用户请求服务器并获得响应的一种基本且简单的方法。
CGI 优点
只要符合规范,CGI 就可以在任何平台上独立于语言。代码简单易用。它是安全的,因为 CGI 脚本在服务器上运行。CGI 轻量级且易于执行。CGI 基于计数器和简单任务的 CGI 代码的任务可用性。通用网关接口的响应速度很快,因此结果会很快。
CGI 缺点
CGI 的缺点如下:
每个页面都会产生开销,以将每个页面程序加载到内存中。
在页面加载期间,数据无法缓存在内存中。
存在大量的代码库,主要用 Perl 编写。
CGI 处理时间很长。
每个请求都需要打开一个新的数据库连接,这使得处理成本高且速度慢。
CGI 安全问题
实现 CGI 脚本的用户浏览器可能包含错误,从而造成潜在威胁。因此,CGI 脚本中出现了另外两个安全问题:
有意或无意地泄露有关主机的信息会造成漏洞,网络罪犯可以利用该漏洞入侵。
远程用户可以隐藏以在 CGI 脚本上执行命令。
结论
CGI(通用网关接口)是一组根据接口规范的程序,它将用户请求传播到应用程序程序或 Web 服务器,并通过 Web 界面向用户提供最终响应,用于 Web 开发。CGI 包含多个脚本和程序。