Perl CGI和HTTP状态码

5

我在一个CGI脚本中有以下验证,它将检查GET方法并返回405 HTTP状态代码,如果没有使用GET方法。不幸的是,当使用POST或PUT时,它仍然返回200状态OK。

my ($buffer);
# Read in text
$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
if ($ENV{'REQUEST_METHOD'} eq "GET")
{
    $buffer = $ENV{'QUERY_STRING'};
}
else
{
    $cgi->$header->status('405 Method Not Allowed')
    print $cgi->header('text/plain');
}

我对CGI编程还很陌生,所以希望有人能给我提供一些关于处理CGI和HTTP状态返回的建议。如果可以提供一份好的CGI文档就太棒了,因为搜索到的大多数文档都是CPAN(已经读了几遍)和过时的非面向对象教程。

1个回答

9

cpan文档对于CGI已经足够了。如果你想要新的教程,不要使用CGI,而是使用MVC框架之一(如 Catalyst、Dancer2、Mojo 等)。

如果进行更改,可以发布405头文件。

$cgi->$header->status('405 Method Not Allowed');
print $cgi->header('text/plain');

转换为:

print $cgi->header(
   -type=>'text/plain',
   -status=> '405 Method Not Allowed'
);

我不想使用 Catalyst 或 Dancer,因为这只是一个小型的 Restful 服务,但我已经研究了 mojo,并且下次构建完整的网站时我想使用它,因为它看起来非常有前途。谢谢你的回答。 - MattSizzle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接