为什么我的CGI标题打印为身体的一部分?

时间:2009-05-26 14:47:38

标签: perl apache cgi

我遇到了一个奇怪的问题,可能与Apache有关,而不是Perl。在我编写的代码中:

print "content-type: text/html\n\n"; 

它与代码一起打印。但是当我输入时:

$c = new CGI; $c->header(); 

它工作正常并显示HTML呈现的输出。

问题是什么?

谢谢

2 个答案:

答案 0 :(得分:2)

“content-type:text / html”输出的第一件事是什么?使用wget或类似方法验证实际输出;不要相信你的眼睛或浏览器的观察源。

另请注意,在mod_perl下,CGI调用请求的send_cgi_header方法,而不是仅打印标题。

您是否有可能在多个地方使用CGI的标题()?这是无害的,但是用显式打印标题替换一个header()调用会得到你看到的结果。

答案 1 :(得分:1)

请记住,HTTP RFC指定

\r\n

用于行分隔符,而不是

\n

所以你想要发光

print "Content-Type: text/html\r\n\r\n";

相反。

您应该只使用->headers来为您执行此操作。

另外,请注意我使用Camel-Case而不是小写。虽然两者都应该有效,但是Camel-Case是规范中使用的符号,所以这是首选的,更有可能适用于奇怪的UA。