2011-12-08 6 views
6

私は302のtempを行う単純なURLを持っています。別のページに移動します。Perl:LWP :: UserAgentは、リダイレクトされたURLのコード200を常に返します。

URLが200を返して(OKの場合)、それを取得し、200以外のものが返された場合には停止するようにします。

マイコード:

my $ua = LWP::UserAgent->new(env_proxy => 1,keep_alive => 1, timeout => 30, agent => "Mozilla/4.76 [en] (Win98; U)"); 
my $response = $ua->get($currenturl); 
print $response->code; 

上記コード常に302 Iは、Firefoxに放火犯を使用してヘッダー応答を試験した場合であっても、200を返します。 URLはFireBugのNetモジュールの "302 Moved Temporarily"を返します。しかし、上記のperlのコードは200を返します。なぜですか?

+3

オプションmax_redirect => 0を試してください。最後のリクエストのコードを返すと思います。 – XoR

答えて

17

LWP :: UserAgentは自動的にHTTP redirectsに従います。 max_redirectオプションを0に設定することで、このような動作を無効にすることができます。

my $ua = LWP::UserAgent->new(max_redirect => 0, env_proxy => 1,keep_alive => 1, timeout => 30, agent => "Mozilla/4.76 [en] (Win98; U)"); 
my $response = $ua->get($currenturl); 
print $response->code; 
関連する問題