2011-12-08 29 views
6

Tôi có một url đơn giản thực hiện điều chỉnh nhiệt độ 302. chuyển sang trang khác.Perl: LWP :: UserAgent trả về luôn mã 200 cho các url được chuyển hướng

Tôi cố gắng truy cập nếu URL trả về mã 200 (cho OK) để truy xuất mã đó và dừng nếu có gì khác hơn 200 được trả lại.

Mã của tôi:

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; 

Đoạn mã trên LUÔN trả về 200, thậm chí nếu nó 302. Tôi đã thử nghiệm phản ứng tiêu đề sử dụng Firebug trong Firefox. URL trả về "302 Đã chuyển tạm thời" trong mô-đun Mạng trong FireBug. Nhưng mã ở trên trong perl trả về 200. Tại sao?

+3

Hãy thử tùy chọn max_redirect => 0. Tôi đoán rằng nó trả về mã từ yêu cầu cuối cùng. – XoR

Trả lời

17

LWP :: UserAgent tự động theo dõi HTTP redirects. Bạn có thể tắt hành vi như vậy bằng cách chuyển tùy chọn max_redirect được đặt thành 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; 
Các vấn đề liên quan