5

我在 CGI 脚本中进行了以下验证,它将检查 GET 方法并在未使用 GET 方法时返回 405 HTTP 状态代码。不幸的是,当使用 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(已经阅读了几次)和非常古老的非面向对象的教程。

4

1 回答 1

9

cpan docs对于 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'
);
于 2013-11-09T06:39:17.333 回答