-2


0

サーバー上でPOST要求をGET要求として処理する際に問題がありますか

この質問で私が投稿した問題を解決しようとして:

これまでのところ、問題に対する唯一の成功した解決策は、環境をだまして、要求がGETであると考えることです。 これを行うには、POSTパラメーターをクエリ文字列に変換し、その文字列を既定の環境変数に保存してから、この要求がGETに使用しているメソッドをサーバーに通知する環境変数を変更します。

$ENV{'QUERY_STRING'} = $long_parameter_string . '&' . $ENV{'QUERY_STRING'};
$ENV{'REQUEST_METHOD'} = 'GET';

system {$perl_exec} $cgi_script;

基本的に、CGIモジュールをだまして、POST要求の読み取りを試みるSTDINからではなく、QUERY_STRING環境変数から読み取るようにしています。

これまでのところ、この方法は機能しているようですが、意図しない影響が心配です。

私の質問は、これに潜在的な問題がありますか?

2 Answer


2


POSTとGETは完全に異なることを意味し、そのように何かを「テスト」するべきではありません。

代わりに、Perlのhttp://search.cpan.org/~gaas/libwww-perl-5.834/lwpcook.pod#POST[LWP]を使用して、目的のURLに実際のPOSTを実行する必要があります。

use HTTP::Request::Common qw(POST);
use LWP::UserAgent;
$ua = LWP::UserAgent->new;

my $req = POST 'http://www.perl.com/cgi-bin/BugGlimpse',
              [ param1 => 'arbitrarily long blob', param2 => 'whatever' ];

print $ua->request($req)->as_string;


1


GETのサイズ制限はPOSTよりもはるかに小さいため、大量の送信とファイルのアップロードで問題が発生します。 予測可能なほど少量のデータについて話しているのであれば、大丈夫です。