我在Perl写一个网页。我在脚本的开头用这一行写出了内容类型:
print header('Content-Type' => 'text/HTML');
这项工作在Chrome和Firefox中,但在IE中,它仍然尝试将该页面下载为文件。我该怎么做才能使IE工作?
答案 0 :(得分:3)
CGI文档仅显示-type
作为header
中Content-Type的关键字。如果它是唯一的参数,则可以省略它并仅指定值。
header( -type => 'text/html' );
# or even
header('text/html');
答案 1 :(得分:3)
您可以通过在命令行上运行来查看生成的标头:
perl -MCGI=:standard -we 'print header( q{Content-Type} => q{text/html} )'
输出:
Status: text/html Content-Type: Content-Type; charset=ISO-8859-1
这显然不是你想要的。 header
函数有several ways to pass parameters。你这样称呼它:
header($content_type, $status);
如果您想使用命名参数调用header
,则必须在其前面加上破折号。除了已识别的参数-type
,-status
,-expires
和-cookie
之外的任何内容都将被剥离初始短划线并转换为标头,因此以下两项工作均为:
perl -MCGI=:standard -we 'print header( q{-Content-Type} => q{text/html} )'
perl -MCGI=:standard -we 'print header( q{-type} => q{text/html} )'
输出:
Content-Type: text/html; charset=ISO-8859-1
但是,text/html
是Content-Type
的默认值,因此您根本不需要指定Content-Type
:
perl -MCGI=:standard -we 'print header()'
输出:
Content-Type: text/html; charset=ISO-8859-1
答案 2 :(得分:0)
通过将行更改为:
来修复print "Content-type:text/html\n\n";
不知道为什么原版不起作用,但无论如何。
答案 3 :(得分:0)
我假设您使用CGI.pm. CGI :: header不设置单个标头,而是设置完整的HTTP标头。 从标题的文档/示例:
print header('text/plain');
我认为你把CGI :: header与PHP中类似的命名函数混淆了。但是同名并不意味着相同的功能。