CGI Perl脚本正在将HTML(以及';内容类型:text/HTML';)字符串打印到浏览器中,而不是呈现它。如何修复?

CGI Perl脚本正在将HTML(以及';内容类型:text/HTML';)字符串打印到浏览器中,而不是呈现它。如何修复?,perl,cgi,Perl,Cgi,我有一个perl CGI脚本,需要返回一些HTML print qq^Content-type: text/html\n\n <HTML> <HEAD> <TITLE>some title</TITLE> ... ... ... ... ^: 打印qq^内容类型:text/html\n\n 一些头衔 ... ... ... ... ^: 我看到的不是浏览器中呈现的HTML,而是整个HTML以及纯文本中的标记和“内容类型”行。下面是浏览器中的外观

我有一个perl CGI脚本,需要返回一些HTML

print qq^Content-type: text/html\n\n
<HTML>
<HEAD>
<TITLE>some title</TITLE>
...
...
...
...
^:
打印qq^内容类型:text/html\n\n 一些头衔 ... ... ... ... ^: 我看到的不是浏览器中呈现的HTML,而是整个HTML以及纯文本中的标记和“内容类型”行。下面是浏览器中的外观-

Content-type: text/html


    <HTML>
    <HEAD>
    <TITLE>some title</TITLE>
    </HEAD>
    <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#000000" VLINK="#000000" ALINK="#000000" BACKGROUND="" onLoad=document.forms[0].elements[0].focus();>
内容类型:文本/html
一些头衔

似乎HTTP头是在输出之前发送的。在此代码之前是否有任何
print
语句(可能在某些函数中)


此外,尝试启用警告和限制(如果已关闭)

此外,由于CGI脚本可以在没有web服务器的情况下调用,因此只需手动调用脚本即可(如果参数/环境变量对脚本有影响,请使用正确的参数/环境变量并查看输出。如eugene y所示,请求头必须是CGI脚本的第一个输出,服务器才能获取它们。

听起来好像您的服务器没有配置为将某些文件类型识别为CGI可执行文件。Assum如果您正在使用Apache,那么将这一行添加到httpd.conf就可以了,尽管有许多其他方法可以配置这一行以实现相同的效果:

AddHandler cgi-script .cgi .pl
您可能还需要将
ExecCGI
添加到域的选项列表中。有关更多信息,请参阅

打印“内容类型:text/html\n\n”; 这会告诉浏览器,在两个换行符之后的文档将是HTML。您必须发送一个标题,以便浏览器知道下一个文档类型,并且必须在标题和实际文档之间包含一个空行


所以在“Content type:text/html\n\n”之后需要一个空行。

是的。但我不是这样。我创建了一个测试“hello world”CGI脚本,其行为与此完全相同。服务器上设置/配置perl的方式可能有问题吗?