我遇到了一个奇怪的问题,可能与Apache有关,而不是Perl。在我编写的代码中:
print "content-type: text/html\n\n";
它与代码一起打印。但是当我输入时:
$c = new CGI; $c->header();
它工作正常并显示HTML呈现的输出。
问题是什么?
谢谢
答案 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。