如何将CGI嵌入HTML页面

3

我没有问题在普通的URL下执行CGI文件,例如:

http://www.myhost.com/mydir/cgi-bin/test.cgi

然而,当我尝试将它嵌入到HTML文件(名为index.html)中时,代码如下:
<HTML>
   <BODY>
   <P>Here's the output from my program:
   <FORM ACTION="/var/www/mydir/cgi-bin/test.cgi" METHOD=POST>

   <!-- This doesn't work also -->
  <!-- FORM ACTION="cgi-bin/test.cgi" METHOD=POST-->

   </FORM>
   </P>
   </BODY>
</HTML>

当我执行以下命令时,CGI无法被执行:
http://www.myhost.com/mydir/index.html

CGI文件(test.cgi)看起来就像这样:
#!/usr/bin/perl -wT
use CGI::Carp qw(fatalsToBrowser);
print "Test cgi!\n";

怎样才是正确的做法?

4个回答

2
问题在于您在表单的action属性中提供的路径。
您需要将其更改为与当前文档(index.html)相对的路径。
从您的示例中看,这应该是cgi-bin/test.cgi

如何通过使用表单将任何内容嵌入HTML页面? - Luis
很抱歉,我不太明白你在说什么。 - Nathan Osman
1
你不能使用HTML表单将外部资源嵌入页面。HTML表单允许你向指定的资源发送数据。 - Luis

2

在HTML中没有很好的方法来做到这一点。最好使用SSI(服务器端包含)并使用exec或virtual directive


1

使用模板。将不同的代码混在一起是一个糟糕的主意。甚至JS和CSS都要与(X)HTML分开以增加可读性和可维护性。


0

你尝试过使用 iframe 吗:

<HTML>
   <BODY>
   <P>Here's the output from my program:
   <iframe src="http://www.myhost.com/mydir/cgi-bin/test.cgi" />
   </P>
   </BODY>
</HTML>

iframes 是块级元素,不能出现在 p 元素内,它们也不被定义为“空元素”,因此不能在 HTML 兼容文档中使用 XML 空元素语法。 - Quentin
iframes也可以用作内联元素,使用空元素语法是完全合法的。我将上述代码插入到一个HTML页面中,插入了过渡性doctype(strict不喜欢iframes),并将所有元素的大小写改为小写,该页面通过w3c验证器验证。 - Luis
糟糕。原来iframe在%flow中。我收回之前的说法。但是在HTML-Compatible XHTML中被禁止的观点仍然存在。验证器并检查符合HTML兼容性指南的一致性。 - Quentin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接