我有一个需要发回一些HTML的perl CGI脚本
print qq^Content-type: text/html\n\n
<HTML>
<HEAD>
<TITLE>some title</TITLE>
...
...
...
...
^:
我没有在浏览器中看到呈现的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();>
答案 0 :(得分:1)
似乎在输出之前发送了HTTP-header。在此代码之前,您是否有任何print
语句(可能在某些函数中)?
此外,尝试启用警告和限制(如果你关闭它们)。
答案 1 :(得分:1)
此外,由于可以在没有Web服务器的情况下调用CGI脚本,只需手动调用脚本(如果它们对脚本很重要并使用正确的参数/环境变量并查看输出。如eugene y所示,请求标头必须是CGI脚本的第一个输出,供服务器选择。
答案 2 :(得分:0)
听起来好像您的服务器尚未配置为将某些文件类型识别为cgi可执行文件。假设您正在使用Apache,将此行添加到您的httpd.conf将会起到作用,尽管还有许多其他方法可以配置它以实现相同的效果:
AddHandler cgi-script .cgi .pl
您可能还需要将ExecCGI
添加到您的域的选项列表中。有关详细信息,请参阅Apache Tutorial: Dynamic Content with CGI。
答案 3 :(得分:0)
print“Content-type:text / html \ n \ n”; 这告诉浏览器两个换行符之后的文档将是HTML。您必须发送一个标题,以便浏览器知道接下来会出现什么类型的文档,并且您必须在标题和实际文档之间包含一个空行。
所以在“Content-type:text / html \ n \ n”
之后你需要一个空行