什么是CGI脚本,它们如何改善网站?

CGI 代表通用网关接口。它是Web服务器执行程序并为Web浏览器生成输出的标准协议。当用户的Web浏览器请求特定的URL时,它代表Web服务器执行以产生输出。

CGI的优点

CGI在许多方面增强了网站的功能。从对用户进行身份验证到提供全面的购物应用程序,CGI是使Web动态和交互式的核心。以下是使用CGI增强用户体验的一些主要好处。

  • 个性化给用户:输出可以个性化给每个用户。例如,用户可能正在检查其银行帐户余额,这可能需要从数据库中检索。
  • 其他类型的个性化设置:用户可能正在使用移动电话访问网站,并需要针对手机分辨率调整输出。
  • 进行更新:由于采用POST形式(以下说明),因此执行了更新。 。例如,您可能正在更新Facebook状态。
  • 上传文件:用户上传的文件需要服务器端具有CGI才能处理文件上传请求以存储文件
  • 生成输出:除了浏览器中显示的输出外,许多网站还提供其他形式的输出,例如Word Document,PDF等。这些文档可能需要由CGI即时生成,例如您的电话账单或信用卡对帐单。
  • 提供静态文件与提供CGI

    提供了HTML文件)由网络服务器直接退出。另一方面,当请求特定的URL时,CGI程序由Web服务器执行。它用于满足需要访问动态信息的请求,例如驻留在数据库中的信息。一个示例是对用户进行身份验证以允许访问:用户名和密码可以存储在数据库中,并且验证用户的请求将需要访问此信息。为了满足该请求,Web服务器将执行CGI程序,该程序将查找信息并验证用户。

    配置Web服务器

    A web server runs HTTP server software which provides the ability to serve out HTML files, as well as execute CGI programs to generate output on the fly. The HTTP server software is configured by the web server administrator to execute specific programs when URLs matching specific patterns are requested.

    执行CGI

    当用户的浏览器向特定URL发出请求时,浏览器会以HTTP标头和HTTP正文的形式发送一堆信息。其中一些可能包括:

  • 浏览器类型
  • 用户名(如果用户已登录)
  • 以前由网络服务器存储的任何cookie
  • 如果请求是POST请求,则形成变量
  • 执行CGI来满足此请求时,服务器会将所有这些信息传递给CGI程序。 CGI可以使用部分或全部这些信息来处理请求并个性化输出给用户。

    处理表单POST

    CGI的主要用途是处理HTML表单。

    HTML表单是一种用户交互设备,它提供各种控件,以便用户可以提供输入。当用户单击表单上的提交按钮(或类似按钮)时,Web浏览器将汇总表单中的信息并将其发送到表单中指示的目标URL。反过来,Web服务器通常调用CGI程序并发送从用户收集的所有输入。这种交互称为表单POST,这是一个技术术语,表示将表单内容发送到CGI的方法。 CGI处理表单内容并产生适当的响应以发送到浏览器。

    示例CGI

    以下是用python编写的示例CGI程序。可以将其部署到Web服务器,以便可以通过类似于http://www.example.com/cgi-bin/env.cgi的URL进行访问。调用时,CGI报告其在环境中从Web服务器收到的所有变量。

    #!/usr/bin/pythonimport osprint "Content-type: text/plain\n"for key in os.environ:  print key, "=>\"", os.environ[key], "\""

    CGI的演变

    CGI自Web诞生以来就已经成为Web服务器的一部分。第一个Web服务器NCSA HTTPd Web Server最初仅支持提供静态文件。随后,人们认识到响应URL请求执行脚本可以使Web服务器生成动态内容,从而诞生了CGI规范。

    最早的CGI程序是用以下语言编写的简单脚本:例如Perl,TCL,Shell等。它也可以用C / C ++之类的编译语言编写,但这需要编译程序以创建可执行CGI的附加步骤。

    随着CGI的出现更为复杂的是,随着用户需求的增加,人们认识到,创建一个单独的CGI进程来服务每个请求在内存和CPU开销方面过于繁重。尤其是在为请求提供服务时,所需的时间少于创建新进程的开销。

    这时,Web服务器开始嵌入成熟的脚本解释器,因此可以在单独的中处理用户请求单个Web服务器进程中的线程。这提高了请求服务的效率,并缩短了响应时间。

    这与专门为Web设计的新语言(例如PHP)的出现相吻合。 PHP解释器从CGI程序本身开始。作为请求处理的一部分,它会为PHP指令解析请求的文件并在其中执行命令。

    如今,除了CGI脚本外,还有许多技术可用于在服务器上执行代码。

    标签: