什么是CGI(公共网关接口)?

Web服务器是internet和Web的重要组成部分。Web服务器用于服务网站、网页、API、文档、视频图像等。Web服务器通常设计为动态的,以适当的方式响应用户请求。CGI(commongatewayinterface)是一种为web服务器提供动态编程和响应功能的技术。

null

什么是CGI(公共网关接口)?

CGI是 Common Gateway Interface . CGI向web服务器提供编程接口,web服务器将在其中使用CGI脚本和应用程序来响应用户请求。它之所以被称为common,是因为它提供了一个通用接口,在这里它被用作不同脚本和应用程序的网关。CGI脚本通常生成包含HTML、JavaScript、CSS、图像、API、ASCII文本等的网页。

CGI最初是作为NCSA(国家超级计算应用中心)的最佳实践而创建的,目的是从web调用命令行可执行文件。随着广泛使用和普及,RFC3875标准于1997年11月制定。

CGI脚本

CGI脚本主要使用C编程语言创建,因为它的标准使用C编程来定义。 getenv() 函数用于从请求中获取环境变量。CGI脚本存储在 /usr/local/apache/htdocs/cgi-bin 但是路径可以根据意愿改变。CGI脚本可以用在不同的编程和脚本语言中,如Bash、Perl、Python等。但是为了方便实用的开发和更改,最好使用Bash和Perl脚本语言。

相关文章: 什么是HTML5?

示例CGI脚本

下面我们可以看到一个用Perl脚本语言开发的CGI脚本示例。

#!/usr/bin/perl=head1 DESCRIPTIONprintenv — This CGI script will print environment variables=cutprint "Content-Type: text/plain";for my $var ( sort keys %ENV ) {    printf "%s = "%s"", $var, $ENV{$var};}
  • `#!/usr/bin/perl`行用于设置给定的文件解释器或编程语言。此行将解释器设置为Perl,位于`/usr/bin/Perl`。
  • `=head1 DESCRIPTION`是一个注释,只需在文档中添加一个标题,行下面也是注释
  • `=cut`是注释的结尾。
  • `打印“内容类型:文本/纯文本” `将输出请求的HTTP响应的第一行。此行将以纯文本形式输出内容类型。
  • `对于我的$var(sort keys%%ENV){`block将遍历环境变量并将值放入`$var`中,`$var`将在每个步骤中打印出来。

当我们调用这个perlcgi脚本时,我们将得到一个输出或HTTP响应,格式如下。

COMSPEC="C:Windowssystem32cmd.exe"DOCUMENT_ROOT="C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs"GATEWAY_INTERFACE="CGI/1.1"HOME="/home/SYSTEM"HTTP_ACCEPT="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"HTTP_ACCEPT_CHARSET="ISO-8859-1,utf-8;q=0.7,*;q=0.7"HTTP_ACCEPT_ENCODING="gzip, deflate, br"HTTP_ACCEPT_LANGUAGE="en-us,en;q=0.5"HTTP_CONNECTION="keep-alive"HTTP_HOST="example.com"HTTP_USER_AGENT="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:67.0) Gecko/20100101 Firefox/66.0"PATH="/home/SYSTEM/bin:/bin:/cygdrive/c/progra~2/php:/cygdrive/c/windows/system32:..."PATHEXT=".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"PATH_INFO="/foo/bar"PATH_TRANSLATED="C:Program Files (x86)Apache Software FoundationApache2.4htdocsfooar"QUERY_STRING="var1=value1&var2=with%20percent%20encoding"REMOTE_ADDR="127.0.0.1"REMOTE_PORT="63555"REQUEST_METHOD="GET"REQUEST_URI="/cgi-bin/printenv.pl/foo/bar?var1=value1&var2=with%20percent%20encoding"SCRIPT_FILENAME="C:/Program Files (x86)/Apache Software Foundation/Apache2.4/cgi-bin/printenv.pl"SCRIPT_NAME="/cgi-bin/printenv.pl"SERVER_ADDR="127.0.0.1"SERVER_ADMIN="(server admin's email address)"SERVER_NAME="127.0.0.1"SERVER_PORT="80"SERVER_PROTOCOL="HTTP/1.1"SERVER_SIGNATURE=""SERVER_SOFTWARE="Apache/2.2.39 (Win32) PHP/7.1.7"SYSTEMROOT="C:Windows"TERM="cygwin"WINDIR="C:Windows"

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享