J'utilise l'installation par défaut d'Apache et mod_perl sur Ubuntu 16.04.1 LTS, j'ai reproduit ce avec la valeur par défaut JSON :: XS et je mis à jour à la dernière CPAN JSON-XS-3.02.JSON :: XS mod_perl échoue avec les requêtes POST
Le code ci-dessous fonctionne dans tous les cas, si je ne l'utilise mod_perl.
Le script et html ci-dessous fonctionnent avec perl via mod_cgi à la fois POST et GET demandes. Si toutefois j'utilise mod_perl et que j'utilise un POST (comme dans le html fourni), il échoue, "Hello" ne s'imprime pas, et j'obtiens l'erreur suivante dans mon fichier journal Apache.
Utilisation: JSON :: XS :: nouveau (Klass).
Si je passe le même paramètre (s) par une méthode GET, le script fonctionne très bien.
test2.pl
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use JSON::XS;
my $q = new CGI();
print $q->header(-type => 'text/plain');
my $action = $q->param('a');
my $json_str = '{"foo":"bar"}';
my $pscalar = JSON::XS->new->utf8->decode($json_str);
print "Hello";
exit 1;
HTML pour appeler ce qui précède (le nom test2.pl sur le serveur)
<html>
<body>
<form action="test2.pl" method="POST">
<input type="text" name="a"/>
<button type="submit">
</form>
</body>
</html>
Non, cela fait la même chose. – Severun