J'ai la validation suivante dans un script CGI qui va vérifier la méthode GET et retourner un code d'état HTTP 405 si la méthode GET n'est pas utilisée. Malheureusement, il renvoie toujours un état 200 OK lorsque vous utilisez POST ou PUT.Perl CGI avec les codes d'état HTTP dans l'API RESTful
my ($buffer);
# Read in text
$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
if ($ENV{'REQUEST_METHOD'} eq "GET")
{
$buffer = $ENV{'QUERY_STRING'};
}
else
{
print $cgi->header(
-type=>'text/plain',
-status=> '405 Method Not Allowed'
);
}
mais quand j'utilise LWP au client et l'impression status_code il donne encore 200 OK et quand j'imprimer le contenu l'impression de l'état: 405 Code
J'utilise au client:
use LWP;
use HTTP:Request::Common;
my $ua = LWP::UserAgent->new;
my $req =PUT("/path/to/request");
my $result = $ua->request($req);
if($result->is_success) {
print "HTTP RESPONSE CODE:" , $result->status_line;
print $result->decoded_content;
}
de code ci-dessus, il imprime les informations suivantes sur le succès
HTTP RESPONSE CODE: 200 OK
Status: 405 Method Not Allowed
"some text regarding why method not allowed"
Requested Method Not allowed
Comment puis-je correspondre à la st atus_line à la valeur provenant de l'en-tête CGI?
Pourquoi vous mélangez GGI.pm (retiré de base en faveur des alternatives) avec roulées à la main environnement CGI analyse (non, juste non, non, non) ?! – Quentin