具有HTTP状态代码的Perl CGI

Mat*_*zle 4 perl w3c cgi http

我在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');
}
Run Code Online (Sandbox Code Playgroud)

我还是CGI编程的新手,所以我想这里的某个人可能会让我觉得有关使用CGI和HTTP状态返回的问题.如果提供了一个很好的CGI文档,那将是很棒的,因为大多数搜索返回的是CPAN(已经读过几次)和非面向对象的旧教程.

Sui*_*uic 7

CPAN文档不止足够多的CGI.如果您想要新教程不使用CGI,请使用MVC框架之一(Catalyst,Dancer2,Mojo等).

如果要更改,您可以发布405标题:

$cgi->$header->status('405 Method Not Allowed');
print $cgi->header('text/plain');
Run Code Online (Sandbox Code Playgroud)

对此:

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