1

「nph-select.pl」というファイルを作成し、以下のようにリダイレクト用のコードを配置しました。

#!"D:\xampp\perl\bin\perl.exe" -w
use CGI qw/:standard/; 
my $cgi = new CGI; 
print $cgi->redirect(-uri => 'http://www.google.com/', -nph => 1); 

ファイルを実行すると、「ドキュメントはここに移動しました」という302 STATUSメッセージが表示されます。しかし、「-」を削除するだけで同じファイルの名前を変更している場合、つまり新しいファイル名が「nphselect.pl」の場合、リダイレクトでも適切に実行されます。誰かが私が見逃している設定を提案できますか?

私のリクエストヘッダーは Host localhost:8080 User-Agent Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Accept text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 Accept-Language en-us,en;q=0.5 Accept-Encoding gzip, deflate Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive 115 Connection keep-alive

RESPONSE HEADERS は空白です。

4

1 に答える 1

6

まず、一部の Web サーバーは、「nph-」で始まる cgi スクリプトを他の cgi スクリプトとは異なる方法で処理するため、- を削除すると変更されます。

リダイレクトを間違って呼び出しています。CGI の名前付きパラメーターはすべて、次のように - で始まる必要があります。

print $cgi->redirect(-uri => 'http://perl.about.com/'); 

uriの代わりに を使用-uriすると、位置パラメータが使用されるため、「url」にリダイレクトしようとします (Web サーバーが完全に修飾する可能性があります)。

nph- スクリプトを使用する場合、redirect の nph オプションを設定すると、より完全なヘッダー セットが提供されます。これで問題が解決する場合があります。

print $cgi->redirect(-uri => 'http://perl.about.com/', -nph => 1); 
于 2011-07-06T08:16:47.217 に答える