初次写cgi程序

时间:2022-03-21 04:57:34
我用vb写的cgi程序
Sub CGI_Main()
Send ("Content-type:text/html")
Send ("")
Send ("<HTML><HEAD><TITLE>Hello!</TITLE></HEAD>")
Send ("<BODY>")
Send ("<H1>welcome</H1>")
Send ("</BODY></HTML>")
End Sub
编译为可执行程序后放到cgi-win目录下,用ie打开却出现下面的错误(win2000+iis5.0)
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:

21 个解决方案

#1


cgi过时了

#2


up

#3


我在呼唤高手

#4


不会VB。
但应该是Send ("Content-type:text/html")错了
改为Send ("Content-type:text/html\n\n")

#5


我照你说的改了程序,可还是出现那个错误
我不知道是程序错误还是我的web服务器配置有误
高手给解决一下,分不够还可以加

#6


你编译出来的是控制台程序吗?
VB的怎么输出回车的?

#7


不好意思,我也不懂vb
赶鸭子上架,我是帮我们老师调试他书中的演示程序

#8


我不懂VB,也不懂CFI,但我用Delphi,照抄书上例子,编了一个CGI程序,倒是一下子就通过了.

这个程序比你的更简单,只有一条语句:

Response.Content:='<HTML>+'Hello! It is 'TimeToStr(SysUtils.Time)+'</HTML>';

运行结果出来是:

Hello! It is 18:12:06 PM

你可以将它翻译为VB,试试看.

#9


改为: 我不懂VB,也不懂CGI,....

#10


再补一个'+'号:

Response.Content:='<HTML>+'Hello! It is '+TimeToStr(SysUtils.Time)+'</HTML>';

#11


VB写Win-CGI: 
在Windows环境下,WEB服务器和一个Windows CGI之间是通过临时文件来传送数据的。这个过程如下: 

1.Web服务器接受一个客户机对Windows CGI程序的请求,这个请求也称为Windows CGI请求。 
2.Web服务器把要传送给Windows CGI程序的数据放在一个叫CGI profile的主输入文件。在某些情况下,还会增加一个文件。 
3.Web服务器执行CGI程序,把CGI profile作为它的第一个参数。 
4.Windows CGI开始执行,服务器等待Windows CGI进程结束。在等待过程中,服务器还可以处理其他请求,比如另一个新的CGI进程或HTTP请求。 
5.Windows CGI程序读取作为命令行参数的profile文件并完成必要的处理,CGI程序也许要使用porfile文件中的数据和其他相关的辅助文件中的数据。 
6.在Windows CGI程序结束前,把它的应答写在profile文件指定的输出文件中。 
7.得到CGI程序处理结果后,WEB服务器读取输出文件,看看输出数据是否要打包,并把最后数据发给客户机。 
8.WEB服务器随后就删除处理这个请求时产生的临时文件。如果在服务器管理器注册时,不删除临时文件,则保留这些临时文件。

上面的内容是我在网上看见的,有几点不明白:怎么建立cgi profile这个文件,又怎么调用这个文件,我在客户端的网页上这么写<form action="c:\inetpub\wwwroot\cgi-win\newapp1.exe indexe.ini" method="post">
可当我按下发出命令的按钮时,提示找不到网页,请高手解答一下怎么解决

#12


晕.没有网络环境怎么运行CGI.最起码你需要知道IIS.
然后在IIS下建有可执行权限的虚拟目录,把exe放到那个目录下,action="虚拟路径/CGI程序名"

#13


楼上的大哥,我也配置了IIS,并且在ie地址栏中输入http://localhost也出现了测试页
我也建了一个有可执行权限的目录cgi-bin,并且我还用perl写了个脚本,客户端网页调用测试也成功了。昨天从网上down了一个别人用vb写的cgi和测试用的客户端网页,还是没有成功,提示:
CGI Timeout
The specified CGI application exceeded the allowed time for processing. The server has deleted the process.
真是不知道什么原因。
是不是调用cgi(后缀是.exe)IIs还要配置什么呢?,各位高手救救我吧,解决了再加100分

#14


郁闷中

#15


中国程序员的出路在何方???

#16


对阿
cgi好像不怎么用了

#17


楼主,你用vb写的cgi是引用的cgi32.bas吧,那是一个wincgi程序,要知道,iis是不支持wincgi的,website才支持

#18


楼主,你用vb写的cgi是引用的cgi32.bas吧,那是一个wincgi程序,要知道,iis是不支持wincgi的,website才支持----------
如上,再补充几句:
 解决办法:
   1用asp2。换成标准输入输出3引入isapi
那一个方法都行

#19


你提交的头部信息不完整啊
by not returning a complete set of HTTP headers.!!!
Send ("Content-type:text/html")???
你只说明文档的数据类型而后面少了两个必要的"/n"

#20


1.如果没有安装IIS,请先安装,WINNT4.0 Server 光盘上有2.0版,OFFICE2000套装上有最新的4.0版和Pack4.0。IIS要求带Service Pack3 的NT服务器3.51或以上的版本支持。
你也可以到以下站台下载IIS和Pack: http://www.IIs.digital.com/infoserv http://www1.scut.edu.cn/msdownload
本人是在OFFICE2000的C盘中安装IIS和PACK4的,安装很简单,找到相应的目录,SETUP就可以了。
  2.安装Perl for win32,下载API518E安装ActivePerl5.00518.
  3. 在开始--->程序--->windows nt40 option pack,找到microsoft internet information servre,选择internet 服务管理器(版本不同,可能目录有所不同).
  4.选择主机的属性,确认"主属性"为WWW服务,点击编缉,进入“skong的WWW服务主属性”,文档的启用默认文档为“index.htm,index.html",确认IIS管理处默认的主机为“home"。确定退出。
  5.右点HOME选择属性,选择主目录,本地路径,设为你的主页目录地址,这里填为:c:\inetpub\wwwroot 。选择确定结束。
  6.在HOME目录下,选操作--->新增虚拟目录,用/scripts 或/cgi-bin 作为目录的别名,按下一步后加上此目录的路径,例c:\inetpub\wwwroot\cgi-bin,按下一步,所有的选项(允许读访问、允许脚本访问、允许执行访问(包括脚本访问)、允许写入访问),全部打勾,选择完成后保存你的修改。
  7.右点HOME下的cgi-bin目录,选属性,在虚拟目录下点配置,在应用程序一栏中添加执行文件:c:\Perl\bin\Perl.exe %s %s 扩展名为 .cgi 。按确定加入,同样添加扩展名为.“pl”、“.exe”,可执行文件全为c:\Perl\bin\Perl.exe %s %s ,注意:%s %s之间要有空格,字母要小写。不然运行CGI时会有“没有返回完整的HTTP标题”等字样。
此外,你的CGI脚本还可能需要读取下列目录及其中的文件:
  %systemroot% \system (通常是c:\winnt\system) 。%systemroot% \system32 (通常是c:\winnt\system32).
  如果你的CGI脚本调用DLL.OLE服务器,或是以VB为基础,则需要修改对临时目录(通常是c:\temp)的权力。如果说你的CGI脚本中,有的要建立输出文件(日志、计数器等),则要对cgi-bin目录修改权和对文档根目录的读取权,这可以在右击home和cgi-bin目录的属性中的选择。
--------------------------------------
你照这这个的再配置过试下

#21


CSDN自己人的乐园

shcsdn.35sw.com
bbs.35sw.com
www.35sw.com

#1


cgi过时了

#2


up

#3


我在呼唤高手

#4


不会VB。
但应该是Send ("Content-type:text/html")错了
改为Send ("Content-type:text/html\n\n")

#5


我照你说的改了程序,可还是出现那个错误
我不知道是程序错误还是我的web服务器配置有误
高手给解决一下,分不够还可以加

#6


你编译出来的是控制台程序吗?
VB的怎么输出回车的?

#7


不好意思,我也不懂vb
赶鸭子上架,我是帮我们老师调试他书中的演示程序

#8


我不懂VB,也不懂CFI,但我用Delphi,照抄书上例子,编了一个CGI程序,倒是一下子就通过了.

这个程序比你的更简单,只有一条语句:

Response.Content:='<HTML>+'Hello! It is 'TimeToStr(SysUtils.Time)+'</HTML>';

运行结果出来是:

Hello! It is 18:12:06 PM

你可以将它翻译为VB,试试看.

#9


改为: 我不懂VB,也不懂CGI,....

#10


再补一个'+'号:

Response.Content:='<HTML>+'Hello! It is '+TimeToStr(SysUtils.Time)+'</HTML>';

#11


VB写Win-CGI: 
在Windows环境下,WEB服务器和一个Windows CGI之间是通过临时文件来传送数据的。这个过程如下: 

1.Web服务器接受一个客户机对Windows CGI程序的请求,这个请求也称为Windows CGI请求。 
2.Web服务器把要传送给Windows CGI程序的数据放在一个叫CGI profile的主输入文件。在某些情况下,还会增加一个文件。 
3.Web服务器执行CGI程序,把CGI profile作为它的第一个参数。 
4.Windows CGI开始执行,服务器等待Windows CGI进程结束。在等待过程中,服务器还可以处理其他请求,比如另一个新的CGI进程或HTTP请求。 
5.Windows CGI程序读取作为命令行参数的profile文件并完成必要的处理,CGI程序也许要使用porfile文件中的数据和其他相关的辅助文件中的数据。 
6.在Windows CGI程序结束前,把它的应答写在profile文件指定的输出文件中。 
7.得到CGI程序处理结果后,WEB服务器读取输出文件,看看输出数据是否要打包,并把最后数据发给客户机。 
8.WEB服务器随后就删除处理这个请求时产生的临时文件。如果在服务器管理器注册时,不删除临时文件,则保留这些临时文件。

上面的内容是我在网上看见的,有几点不明白:怎么建立cgi profile这个文件,又怎么调用这个文件,我在客户端的网页上这么写<form action="c:\inetpub\wwwroot\cgi-win\newapp1.exe indexe.ini" method="post">
可当我按下发出命令的按钮时,提示找不到网页,请高手解答一下怎么解决

#12


晕.没有网络环境怎么运行CGI.最起码你需要知道IIS.
然后在IIS下建有可执行权限的虚拟目录,把exe放到那个目录下,action="虚拟路径/CGI程序名"

#13


楼上的大哥,我也配置了IIS,并且在ie地址栏中输入http://localhost也出现了测试页
我也建了一个有可执行权限的目录cgi-bin,并且我还用perl写了个脚本,客户端网页调用测试也成功了。昨天从网上down了一个别人用vb写的cgi和测试用的客户端网页,还是没有成功,提示:
CGI Timeout
The specified CGI application exceeded the allowed time for processing. The server has deleted the process.
真是不知道什么原因。
是不是调用cgi(后缀是.exe)IIs还要配置什么呢?,各位高手救救我吧,解决了再加100分

#14


郁闷中

#15


中国程序员的出路在何方???

#16


对阿
cgi好像不怎么用了

#17


楼主,你用vb写的cgi是引用的cgi32.bas吧,那是一个wincgi程序,要知道,iis是不支持wincgi的,website才支持

#18


楼主,你用vb写的cgi是引用的cgi32.bas吧,那是一个wincgi程序,要知道,iis是不支持wincgi的,website才支持----------
如上,再补充几句:
 解决办法:
   1用asp2。换成标准输入输出3引入isapi
那一个方法都行

#19


你提交的头部信息不完整啊
by not returning a complete set of HTTP headers.!!!
Send ("Content-type:text/html")???
你只说明文档的数据类型而后面少了两个必要的"/n"

#20


1.如果没有安装IIS,请先安装,WINNT4.0 Server 光盘上有2.0版,OFFICE2000套装上有最新的4.0版和Pack4.0。IIS要求带Service Pack3 的NT服务器3.51或以上的版本支持。
你也可以到以下站台下载IIS和Pack: http://www.IIs.digital.com/infoserv http://www1.scut.edu.cn/msdownload
本人是在OFFICE2000的C盘中安装IIS和PACK4的,安装很简单,找到相应的目录,SETUP就可以了。
  2.安装Perl for win32,下载API518E安装ActivePerl5.00518.
  3. 在开始--->程序--->windows nt40 option pack,找到microsoft internet information servre,选择internet 服务管理器(版本不同,可能目录有所不同).
  4.选择主机的属性,确认"主属性"为WWW服务,点击编缉,进入“skong的WWW服务主属性”,文档的启用默认文档为“index.htm,index.html",确认IIS管理处默认的主机为“home"。确定退出。
  5.右点HOME选择属性,选择主目录,本地路径,设为你的主页目录地址,这里填为:c:\inetpub\wwwroot 。选择确定结束。
  6.在HOME目录下,选操作--->新增虚拟目录,用/scripts 或/cgi-bin 作为目录的别名,按下一步后加上此目录的路径,例c:\inetpub\wwwroot\cgi-bin,按下一步,所有的选项(允许读访问、允许脚本访问、允许执行访问(包括脚本访问)、允许写入访问),全部打勾,选择完成后保存你的修改。
  7.右点HOME下的cgi-bin目录,选属性,在虚拟目录下点配置,在应用程序一栏中添加执行文件:c:\Perl\bin\Perl.exe %s %s 扩展名为 .cgi 。按确定加入,同样添加扩展名为.“pl”、“.exe”,可执行文件全为c:\Perl\bin\Perl.exe %s %s ,注意:%s %s之间要有空格,字母要小写。不然运行CGI时会有“没有返回完整的HTTP标题”等字样。
此外,你的CGI脚本还可能需要读取下列目录及其中的文件:
  %systemroot% \system (通常是c:\winnt\system) 。%systemroot% \system32 (通常是c:\winnt\system32).
  如果你的CGI脚本调用DLL.OLE服务器,或是以VB为基础,则需要修改对临时目录(通常是c:\temp)的权力。如果说你的CGI脚本中,有的要建立输出文件(日志、计数器等),则要对cgi-bin目录修改权和对文档根目录的读取权,这可以在右击home和cgi-bin目录的属性中的选择。
--------------------------------------
你照这这个的再配置过试下

#21


CSDN自己人的乐园

shcsdn.35sw.com
bbs.35sw.com
www.35sw.com