通用网关接口

✍ dations ◷ 2025-12-09 13:55:09 #通用网关接口

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

简而言之,一个 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。

相关

  • 白令海峡白令海峡(英语:Bering Strait、楚科奇语:Эʼрвытгыр、俄语:Бе́рингов проли́в),或译白林海峡,是太平洋的一个海峡,位于亚洲最东点的迭日涅夫角(169°43' W)和
  • 台北工业学校红楼中华民国(台湾)台北校区(校本部):台北市大安区忠孝东路三段1号国立台北科技大学(英语译名:National Taipei University of Technology),简称北科、北科大、台北科大、NTUT ,台北联合大
  • 顶泰山岩坐标:25°02′38″N 121°25′25″E / 25.0437547701617°N 121.42357078898°E / 25.0437547701617; 121.42357078898顶泰山岩位于台湾新北市泰山区应化街三十二号,主祀显应
  • 独孤彦云 (溧阳县公)独孤彦云(?-?),京兆人,北周独孤信部下独孤屯之孙,隋朝并州总管、汝阳郡公独孤楷之子,李渊太原起兵原从功臣,武德九年(626年)六月四日参与了玄武门之变,因功封幽州都督、潥阳县公,死后陪葬
  • 大野麻里奈大野麻里奈(日语:大野 まりな/おおの まりな ,1972年4月5日-),日本女性配音员、歌手、音响监督。出身于广岛县吴市。身高158cm。O型血。以前经历青二Production、TAB Production(日
  • 香月良太香月良太(日语:かつき りょうた,1982年7月27日-),效力于读卖巨人守备为投手。福冈县久留米市出身。是千叶罗德海洋香月良仁的哥哥。
  • 世界黄金协会世界黄金协会(英语:World Gold Council),于1987年由多家黄金公司组成一家非牟利机构,为投资者、工业界,以及消费者带来刺激黄金作用。本会主席为伊恩·特尔非(Ian Telfer),首席执行官
  • 王承衍王承衍(952年-1003年),字希甫,中国北宋驸马,洛阳县(今河南省洛阳市)人。王审琦之子,幼端谨,善骑射,晓音律。宋太祖开宝初年,补内殿供奉官都知。开宝三年(970年),娶宋太祖之女昭庆公主,授右卫将军、驸马都尉。领恩州刺史兼防御使。宋太宗太平兴国三年(978年),加检校太保,太平兴国七年(982年),授彰国军节度使。雍熙年间,王承衍出知天雄军府(今河北大名)兼都部署。一次,契丹出兵侵扰镇阳。侯骑入冀州,离魏200余里。王承衍欢庆定人心,张灯结彩,击鼓吹乐,欢庆上元节。王承衍带着他的僚属宾客,饮宴作乐
  • 阿里亚拉玛纳阿里亚拉玛纳 (古波斯语: �������� , "给雅利安人带来和平的人(i.e. Iranians)")是阿契美尼德王国早期君主,可能是波斯玛什(英语:Parsua)王,阿契美尼德王国的核心王国之一。阿里亚拉玛纳很可能是铁伊斯佩斯之子、居鲁士一世的兄弟, 虽然仍未能肯定。 无论如何, 他说阿契美尼德家族一员。根据贝希斯敦铭文,阿里亚拉玛纳和居鲁士一世、冈比西斯一世父子同时管理着阿契美尼德王国,他是阿契美尼德王国最早的王。20世纪早期发现于埃克巴坦那(今哈马丹)的两块金板上发现了关于阿里亚拉玛纳的信息。
  • 南美洲足球联合会南美洲足球联合会(简称南美足联,CONMEBOL,全名:CONfederación sudaMEricana de FútBOL)是负责管理南美洲各项足球事务的体育机构。成立于1916年7月9日。目前南美洲足球联合会也是六大洲足协中会员国平均质素最好的足协,所有国家除了委内瑞拉外均曾进入国际足联世界杯决赛周。总部设在巴拉圭的卢克。现任主席为巴拉圭的Alejandro Domínguez。俱乐部赛事: 国家队赛事: 跨洲赛事: 排名资料来自FIFA。最后更新:2019年6月14日 排名资料来自FIFA。最后