fbpx
维基百科

通用网关接口

在计算机领域,通用网关接口 (英语:Common Gateway Interface,CGI) 是为提供网络服务而执行控制台应用 (或称命令行界面)的程序,提供于服务器上实现动态网页的通用协议。通常情况下,一次请求对应一个CGI 脚本的执行,生成一个 HTML。[1]

简而言之,一个 HTTP POST 请求,从客户端经由 标准输入 发送数据到一个CGI 程序。同时携带其他数据,例如 URL 路径, HTTP头字段数据,被转换为进程的环境变量。

歷史 编辑

最初,CGI是在1993年由美国国家超级电脑应用中心NCSA)为NCSA HTTPd Web服务器开发的。这个Web服务器使用了UNIX shell 环境变量来保存从Web服务器传递出去的参数,然后生成一个运行CGI的独立的进程

運作 编辑

Perl是一个广泛被用來編寫CGI程式的语言,但CGI是獨立於任何語言的。Web服务器无须对语言有任何了解。事实上,CGI程序可以用任何脚本语言或者编程语言实现,只要該语言可以在系统上运行。除Perl外,像Unix shell 脚本, Python, Ruby, PHP, Tcl, C/C++Visual Basic都可以用来編写CGI程序。

实现維基百科編輯的CGI程序的一个例子:首先用户代理程序向这个CGI程序请求某个名称的条目,如果该条目页面存在,CGI程序就会去获取那个条目页面的原始数据,然后把它转换成HTML并把结果输出给浏览器;如果该条目页面不存在,CGI程序则会提示用户新建一个页面。所有維基操作都是通过这个CGI程序来处理的。

CGI的工作方式,从Web服务器的角度看,是在特定的位置(比如:http://www.example.com/wiki.cgi)定义了可以运行CGI程序。当收到一个匹配URL的请求,相应的程序就会被调用,并将客户端发送的数据作为输入。程序的输出会由Web服务器收集,并加上合适的檔头,再发送回客户端。

一般每次的CGI请求都需要新生成一个程序的副本来运行,这样大的工作量会很快将服务器压垮,因此一些更有效的技术像mod_perl,可以让脚本解释器直接作为模块集成在Web服务器(例如:Apache)中,这样就能避免重复载入和初始化解释器。不过这只是就那些需要解释器的高级语言(即解释语言)而言的,使用诸如C一类的编译语言则可以避免这种额外负荷。由于C及其他编译语言的程序与解释语言程序相比,前者的运行速度更快、对操作系统的负荷更小,使用编译语言程序是可能达到更高执行效率的,然而因为开发效率等原因,在目前直譯語言还是最合适的。

变通方法 编辑

如果代码只是偶尔改变的话,我们可以在服务器产生一个新的进程在编译代码之前进行处理。有一个例子是FastCGI,当然还包括其它编写的加速器,它会在第一次调用脚本时,在系统的某个地方保存脚本编译过的版本。这样对这个文件以后的请求就会自动转向这个编译过的代码,而不用每次调用脚本解释器来解释脚本。当更改了脚本,加速器的临时缓存会被清空来保证调用的是新的版本的脚本。

另一个方法是直接把解释器放在Web服务器中,这样就无须新建一个进程来执行脚本。Apache服务器有很多这样的模块,像mod_cplusplus (页面存档备份,存于互联网档案馆)、mod_perl、mod_php、mod_python、mod_ruby、和mod_mono。

参见 编辑

参考文献 编辑

  1. ^ RFC3875: The Common Gateway Interface (CGI) Version 1.1. [2019-08-19]. (原始内容于2021-04-19). 

外部链接 编辑

  • The .
  • The complete list of CGI variables is at .
  • The SCGI (页面存档备份,存于互联网档案馆) protocol is a replacement for the Common Gateway Interface (CGI) protocol.
  • mod_cplusplus for Apache (页面存档备份,存于互联网档案馆

通用网关接口, 此條目翻譯品質不佳, 翻譯者可能不熟悉中文或原文語言, 也可能使用了機器翻譯, 請協助翻譯本條目或重新編寫, 并注意避免翻译腔的问题, 明顯拙劣的翻譯請改掛, href, template, html, class, redirect, title, template, href, wikipedia, html, class, redirect, title, wikipedia, 提交刪除, 在计算机领域, 英语, common, gateway, interface, 是为提供网络服务而执行控. 此條目翻譯品質不佳 翻譯者可能不熟悉中文或原文語言 也可能使用了機器翻譯 請協助翻譯本條目或重新編寫 并注意避免翻译腔的问题 明顯拙劣的翻譯請改掛 a href Template D html class mw redirect title Template D d a a href Wikipedia CSD html G13 class mw redirect title Wikipedia CSD G13 a 提交刪除 在计算机领域 通用网关接口 英语 Common Gateway Interface CGI 是为提供网络服务而执行控制台应用 或称命令行界面 的程序 提供于服务器上实现动态网页的通用协议 通常情况下 一次请求对应一个CGI 脚本的执行 生成一个 HTML 1 简而言之 一个 HTTP POST 请求 从客户端经由 标准输入 发送数据到一个CGI 程序 同时携带其他数据 例如 URL 路径 HTTP头字段数据 被转换为进程的环境变量 目录 1 歷史 2 運作 3 变通方法 4 参见 5 参考文献 6 外部链接歷史 编辑最初 CGI是在1993年由美国国家超级电脑应用中心 NCSA 为NCSA HTTPd Web服务器开发的 这个Web服务器使用了UNIX shell 环境变量来保存从Web服务器传递出去的参数 然后生成一个运行CGI的独立的进程 運作 编辑Perl是一个广泛被用來編寫CGI程式的语言 但CGI是獨立於任何語言的 Web服务器无须对语言有任何了解 事实上 CGI程序可以用任何脚本语言或者编程语言实现 只要該语言可以在系统上运行 除Perl外 像Unix shell 脚本 Python Ruby PHP Tcl C C 和Visual Basic都可以用来編写CGI程序 实现維基百科編輯的CGI程序的一个例子 首先用户代理程序向这个CGI程序请求某个名称的条目 如果该条目页面存在 CGI程序就会去获取那个条目页面的原始数据 然后把它转换成HTML并把结果输出给浏览器 如果该条目页面不存在 CGI程序则会提示用户新建一个页面 所有維基操作都是通过这个CGI程序来处理的 CGI的工作方式 从Web服务器的角度看 是在特定的位置 比如 http www example com wiki cgi 定义了可以运行CGI程序 当收到一个匹配URL的请求 相应的程序就会被调用 并将客户端发送的数据作为输入 程序的输出会由Web服务器收集 并加上合适的檔头 再发送回客户端 一般每次的CGI请求都需要新生成一个程序的副本来运行 这样大的工作量会很快将服务器压垮 因此一些更有效的技术像mod perl 可以让脚本解释器直接作为模块集成在Web服务器 例如 Apache 中 这样就能避免重复载入和初始化解释器 不过这只是就那些需要解释器的高级语言 即解释语言 而言的 使用诸如C一类的编译语言则可以避免这种额外负荷 由于C及其他编译语言的程序与解释语言程序相比 前者的运行速度更快 对操作系统的负荷更小 使用编译语言程序是可能达到更高执行效率的 然而因为开发效率等原因 在目前直譯語言还是最合适的 变通方法 编辑如果代码只是偶尔改变的话 我们可以在服务器产生一个新的进程在编译代码之前进行处理 有一个例子是FastCGI 当然还包括其它编写的加速器 它会在第一次调用脚本时 在系统的某个地方保存脚本编译过的版本 这样对这个文件以后的请求就会自动转向这个编译过的代码 而不用每次调用脚本解释器来解释脚本 当更改了脚本 加速器的临时缓存会被清空来保证调用的是新的版本的脚本 另一个方法是直接把解释器放在Web服务器中 这样就无须新建一个进程来执行脚本 Apache服务器有很多这样的模块 像mod cplusplus 页面存档备份 存于互联网档案馆 mod perl mod php mod python mod ruby 和mod mono 参见 编辑FastCGI CGI pm 简单通用网关接口 Perl参考文献 编辑 RFC3875 The Common Gateway Interface CGI Version 1 1 2019 08 19 原始内容存档于2021 04 19 外部链接 编辑The CGI 1 1 specification The complete list of CGI variables is at https web archive org web 20060424143818 http hoohoo ncsa uiuc edu cgi env html The SCGI 页面存档备份 存于互联网档案馆 protocol is a replacement for the Common Gateway Interface CGI protocol mod cplusplus for Apache 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title 通用网关接口 amp oldid 70487973, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。