如何在Perl中为IE设置Content-Type

时间:2014-09-30 15:00:58

标签: perl

我在Perl写一个网页。我在脚本的开头用这一行写出了内容类型:

print header('Content-Type' => 'text/HTML');

这项工作在Chrome和Firefox中,但在IE中,它仍然尝试将该页面下载为文件。我该怎么做才能使IE工作?

4 个答案:

答案 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/htmlContent-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中类似的命名函数混淆了。但是同名并不意味着相同的功能。