CGI是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CGI是啥?相关的知识,希望对你有一定的参考价值。

CGI是什么?

什么是CGI
1. 定义:
CGI(Common Gateway Interface)是HTTP服务器与你的或其它机器
上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。

2. 功能:
绝大多数的CGI程序被用来解释处理杰自表单的输入信息,并在服
务器产生相应的处理,或将相应的信息反馈给浏览器。CGI程序使
网页具有交互功能。

3. 运行环境:
CGI程序在UNIX操作系统上CERN或NCSA格式的服务器上运行。
在其它操作系统(如:windows NT及windows95等)的服务器上
也广泛地使用CGI程序,同时它也适用于各种类型机器。

4. CGI处理步骤:
⑴通过Internet把用户请求送到服务器。
⑵服务器接收用户请求并交给CGI程序处理。
⑶CGI程序把处理结果传送给服务器。
⑷服务器把结果送回到用户。

5. CGI服务器配置:
CGI程序不是放在服务器上就能顺利运行,如果要想使其在服务器
上顺利的运行并准确的处理用户的请求,则须对所使用的服务器进
行必要的设置。
配置:根据所使用的服务器类型以及它的设置把CGI程序放在某一
特定的目录中或使其带有特定的扩展名。
⑴CREN格式服务器的配置:
编辑CREN格式服务器的配置文件通常为/etc/httpd.conf/
在文件中加入:Exec cgi-bin/*/home/www/cgi-bin/*.exec
命令中出现的第一个参数cgi-bin/*指出了在URL中出现的目录
名字,并表示它出
现在系统主机后的第一个目录中,如:
http://edgar.stern.nyn.edu/cgi-bin/
命令中的第二个参数表示CGI程序目录放在系统中的真实路径。
CGI目录除了可以点网络文件放在同一目录中,也可以放在系统
的其它目录中,但必须保证在你的系统中也具有同样的目录。在
对服务器完成设置后,须重新启动服务器(除非HTTP服务器是用
inetd启动的)。
⑵NCSA格式服务器的配置
在NCSA格式服务器上有两种方法进行设置:
①在srm.conf文件(通常在conf目录下)中加入:
Script Alias/cgi-bin/cgi-bin/
Script Alias命令指出某一目录下的文件是可执行程序,且这
个命令是用来执行
这些程序的;此命令的两个参数与CERN格式服务器中的Exec命
令的参数的含意一样。
②在srm.conf文件加入:
Add type application/x-httpd-cgi.cgi
此命令表示在服务器上增加了一种新的文件类型,其后第一个
参数为CGI程序的MIME类型,第二个参数是文件的扩展名,表
示以这一扩展名为扩展名的文件是CGI程序。
在用上述方法之一设置服务器后,都得重新启动服务器(除非
HTTP服务器是用inetd启动的)。

什么是IIS
首先,Internet Information Server的缩写为(IIS)是一个World Wide Web server。Gopher server和FTP server全部包容在里面。 IIS意味着你能发布网页,并且有ASP(Active Server Pages)、JAVA、VBscript产生页面,有着一些扩展功能。IIS支持一些有趣的东西,象有编辑环境的界面(FRONTPAGE)、有全文检索功能的(INDEX SERVER)、有多媒体功能的(NET SHOW)
其次,IIS是随Windows NT Server 4.0一起提供的文件和应用程序服务器,是在Windows NT Server上建立Internet服务器的基本组件。它与Windows NT Server完全集成,允许使用Windows NT Server内置的安全性以及NTFS文件系统建立强大灵活的Internet/Intranet站点。
1.IIS的安装
IIS可以在Windows NT安装时安装,也可以安装完Windows NT后用“控制面板”中的“添加/删除程序”安装,安装路径为光盘中的:i386\inetsrv\inetstp.exe。安装过程中要求添加相应的ODBC驱动程序。
2.IIS的管理
IIS通过ISM(Internet Service Manager)进行管理,ISM有两个版本,一个以普通应用程序的方式运行,一个在Web浏览器中运行,二者的差别在于后者不能启动和停止Internet服务。
ISM(应用程序方式)管理界面:在“查看”菜单中选择“查看报告”、“服务器查看”、“服务查看”可以得到三种视图:
报告视图 缺省的视图,按字母顺序依次显示所选择的计算机及其上安装的服务。通过该视图可以:连到服务器并显示其属性对话框;启动、停止或暂停服务;可选择显示哪些服务(FTP、WWW、GOPHER)。
服务器视图 显示网络上运行Internet服务的计算机名。打开该计算机可以看到正在运行的Internet服务。双击服务器名可以显示其属性对话框。
服务视图 列出所有的Internet服务。打开服务可以看到哪些计算机运行该服务。双击服务下的计算机名,可以打开该计算机上的服务属性对话框。
3.IIS安全性
IIS的安全性核心依赖于Windows NT Server内置的安全性,IIS自身也内置了安全性。包括加密、验证以及IIS扩展等。
(1)Windows NT Server安全性:Windows NT提供用户账户安全性、NTFS安全性。
①用户账户安全性:Windows NT要求用户提供有效账户以及口令才能访问Windows NT。IIS安装时创建Internet Guest 账户,缺省情况下,所有IIS用户都使用这个账户登录到服务器,这个账户只允许本地登录,没有其他权利。假如允许远程用户用登录Internet Guest 账户登录就不必给远程用户用户名及口令,Windows NT以Internet Guest 账户对待。
②NTFS文件安全性:NTFS提供安全性,可以控制对数据文件的访问,应当将数据文件放在NTFS分区。NTFS可以精确控制哪些用户和组以什么权限访问文件和目录。
(2)IIS的安全性:除了Windows NT的安全措施外,IIS本身也有安全控制能力。通过账户名及口令控制访问:可以配置WWW服务要求用户连入服务器之前提供一个合法的用户名及口令。
参考技术A

CGI是Web服务器运行时外部程序的规范,按CGI编写的程序可以扩展服务器功能。CGI 应用程序能与浏览器进行交互,还可通过数据库API 与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为html文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。

几乎所有服务器都支持CGI,可用任何语言编写CGI,包括流行的C、C ++、VB 和Delphi 等。CGI 分为标准CGI 和间接CGI两种。标准CGI 使用命令行参数或环境变量表示服务器的详细请求,服务器与浏览器通信采用标准输入输出方式。间接CGI 又称缓冲CGI,在CGI 程序和CGI 接口之间插入一个缓冲程序,缓冲程序与CGI 接口间用标准输入输出进行通信。

参考技术B

CGI 是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。

CGI(Common Gateway Interface) 是WWW技术中最重要的技术之一,有着不可替代的重要地位。CGI是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。

CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。

扩展资料【CGI的处理步骤】:

⑴通过Internet把用户请求送到web服务器。

⑵web服务器接收用户请求并交给CGI程序处理。

⑶CGI程序把处理结果传送给web服务器。

⑷web服务器把结果送回到用户。

参考技术C

CGI 是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。CGI 应用程序能与浏览器进行交互,还可通过数据库API 与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。

在计算机图形界面中,一种位于图形核心系统与硬件之间的低阶界面。

拓展资料:

CGI(Common Gateway Interface) 是WWW技术中最重要的技术之一,有着不可替代的重要地位。CGI是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。

参考技术D 什么是CGI

CGI是一个用于定Web服务器与外部程序之间通信方式的标准,使得外部程序能生成HTML、图像或者其他内容,而服务器处理的方式与那些非外部程序生成的HTML、图像或其他内容的处理方式是相同的。因此,CGI程序册仅使你能生成表态内容而能生动态内容。使用CGI的原因在于它是一个定义良好并被广泛支持的标准,没有CGI就不可能实现动态的Web页面,除非使用一些服务器中提供的特殊方法(如今,也有除CGI之外的其他技术逐渐在成为标准)。

CS193P 作业 3,提示#5 - 型号是啥?

【中文标题】CS193P 作业 3,提示#5 - 型号是啥?【英文标题】:CS193P Assignment 3, Hint#5 - What is the model?CS193P 作业 3,提示#5 - 型号是什么? 【发布时间】:2012-05-03 07:19:21 【问题描述】:

我正在学习斯坦福 2011 年秋季 iOS 课程: http://www.stanford.edu/class/cs193p/cgi-bin/drupal/

我正在执行任务#3: http://www.stanford.edu/class/cs193p/cgi-bin/drupal/system/files/assignments/Assignment%203_2.pdf

总而言之,之前的作业要求构建一个常规计算器,现在这个作业要求我们将此计算器推送到导航控制器,并创建从 CalculatorViewController 到 GraphViewController 的 segue,它将绘制存储在“计算器大脑”。这个 CalculatorBrain 是原始 CalculatorViewController 的模型。

提示#5 一直在谈论这样一个事实,即现在 GraphViewController 的模型与 CalculatorViewController 的模型不同,我不明白他的意思。

我能够构建新 MVC 的唯一方法是在 GraphViewController 的 GraphView(视图)中创建一个协议,其中包含一个名为“dataSource”的类型 ID 的对象。然后在 GraphViewController 中:采用该协议,实例化 GraphView 并将其自身设置为数据源:

-(void) setGraphView:(GraphView *)graphView
  
  _graphView=graphView;   
  self.graphView.dataSource=self;
  

然后在原来的CalculatoViewController中,使用prepareForSegue将程序传递给GraphViewController:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

  if([segue.identifier isEqualToString:@"Graph"])
  
    GraphViewController *myGraphViewController = segue.destinationViewController;
    myGraphViewController.myCalculator=self.myCalcBrain;
  

所以这似乎工作正常。所以如果这样的话,那就意味着 GraphViewController 的模型真的是他明确说不是的原始计算器大脑!

我的意思是,在 segue 期间,我将来自原始 CalculatorViewController 的计算器模型实例分配给 Graphviewcontroller 计算器属性,然后使用协议将 Y 值从 GraphViewController 返回到 GraphView,这并不是事实意味着GraphViewController 的模型实际上只是原始的 CalculatorBrain 模型。

【问题讨论】:

不是“这个新视图控制器的模型是什么?”究竟是什么要求你弄清楚? 认为应该是什么?图形视图控制器对哪些数据进行操作? @Caleb 谢谢。真正令人困惑的是,我在 GraphView 类中定义了一个协议(带有一个方法和一个属性),然后让 GraphViewController 实现该协议(和该方法),以使该方法响应所传递的 x 的 Y 值。这让我很困扰,因为在我看来,这告诉我 GraphVC 的模型值(Y)仍然来自主“CalculatorBrain”类,他说它不是。也许这只是语义......我是不是想多了? 【参考方案1】:

我确实相信模型是“程序”,一个 NSArray 对象。它不能是程序的描述,因为没有简单的方法来计算给定 NSString 的“y”值。您必须将 NSString 重新解析为堆栈(NSArray)。这样一来,将模型作为 NSArray/program 不是更直接吗?

【讨论】:

【参考方案2】:

我不想为你回答这个问题,因为这是你应该做的,但我相信你想多了,所以这就是他想让你意识到/做的事情:

您的模型将是一个继承自原始计算器模型的新类。这就是为什么他说你只需要从头开始创建视图和控制器。您还必须创建一个模型类,但许多必要的代码已经存在于旧的 calc 模型中,因此您只需继承它并添加必要的附加功能。

希望对您有所帮助,并且很高兴看到您正在使用这些课程。它们是一个很棒的免费工具!

【讨论】:

您将向继承模型添加什么样的附加功能。真的没有什么可补充的。 GraphView 正在遍历 x 并从 ... 询问并取回 Y 值。由于视图和模型无法相互通信,这告诉我您建议设置 GraphVC 以实例化 Calc Brain(从继承的模型),但仍然通过顶层 MVC 传递原始 Calc 对象。与模型只是@Matt 一样的公式相比,它似乎过于复杂。我希望我们能在这里得到更多的反馈。谢谢【参考方案3】:

当我做那个任务时,我也为这个问题有点挣扎。我得出的结论(无论对错)模型只是一个公式——这看起来就像你得出的结论,虽然不是计算器大脑类,但与它密切相关!

编辑:

我刚刚回去查看了我的计算器程序(我目前正在做 flickr 作业,所以有一段时间没看)

看看基本的计算器,模型是一个“calculatorbrain”对象

在作业的提示中它说

不要将此 Controller 的 Model 与 CalculatorViewController 的 Model 混淆。它们不一样。不要过度思考这一点。您的新控制器模型就在眼前!

我拥有的graphview 控制器模型是一个程序。正如在calculatorbrain 中定义的程序一样——只是一个操作堆栈(NSArray)而不是calculatorbrain。我只是通过 segue 将当前程序传递到 graphview 控制器。

对我来说,它似乎符合提示的细节 - 当您继续查看图表时,程序就在手边,但它与计算器的模型不同相同

提示并没有说它与模型无关。

但我也有点 iOS n00b,所以这只是我的看法!

【讨论】:

【参考方案4】:

模型应该只是一个描述您要绘制的“程序”的 NSString。就像在计算器大脑返回给您的程序中一样!

id program = [self.dataSource.brain program];

【讨论】:

这可能过于复杂了。然后,您必须将 NSString 更改回一个数组才能绘制它...【参考方案5】:

我的模型也是“程序”!

【讨论】:

【参考方案6】:

@Lee Cjin Pheow,你是对的。随着我在这门课程中的进步,这一点变得更加明显。所以模型只是一个保存程序的 NSArray。我认为我的困惑是因为我做了一个 n00b 假设,即 MVC 中的模型必须是它自己的类/文件,因此我搜索了一个模型类/文件。随着我的进步,我看到教授有一个 MVC,其中模型实际上只是一个属性,例如,它位于控制器中。我只需要在我简单的头脑中保持黄色不越线。

【讨论】:

以上是关于CGI是啥?的主要内容,如果未能解决你的问题,请参考以下文章

CGI是啥?通用网关接口,他的用途是啥,用在哪里

使用测试驱动开发开发 Perl CGI 应用程序时,第一个测试是啥?

win7 IIS管理其中没有“ISAPI 和 CGI 限制”选项是啥原因?

ASP、PHP、CGI、jsP C语言、C++、VB、JAVA、PERL、DELPHI YSQL、SQL、FOXPRO WIN2K、WINNT 是啥意思啊

网页出现“504 Gateway Time-out”,没有其它信息是啥原因?

CS193P 作业 3,提示#5 - 型号是啥?