2011-12-08 8 views
6

Ho un semplice URL che esegue un 302 temp. passa a un'altra pagina.Perl: LWP :: UserAgent restituisce sempre il codice 200 per gli URL reindirizzati

Cerco di ottenere se l'URL restituisce il codice 200 (per OK) per recuperarlo e per interrompere se viene restituito qualcosa di diverso da 200.

Il mio codice:

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; 

Il codice di cui sopra restituisce sempre 200, anche se la sua 302. Ho testato la risposta di intestazione utilizzando Firebug in Firefox. L'URL restituisce "302 Moved Temporarily" nel modulo Net in FireBug. Ma il codice sopra in perl restituisce 200. Perché?

+3

Prova opzione max_redirect => 0. Immagino che restituisca il codice dall'ultima richiesta. – XoR

risposta

17

LWP :: UserAgent segue automaticamente HTTP redirects. È possibile disabilitare tale comportamento passando l'opzione max_redirect impostata su 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; 
Problemi correlati