Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Perl > Perl Misc > LWP gives 302 Found after update?

Reply
Thread Tools

LWP gives 302 Found after update?

 
 
John Bokma
Guest
Posts: n/a
 
      08-16-2005
The following script used to work (Logs in to a PHPbb message board):

use strict;
use warnings;

use LWP::UserAgent;
use LWP:ebug qw(+);

my $ua = LWP::UserAgent->new();

my $response = $ua->post(

"http://toxicice.com/login.php", [

username => 'xxxxxxx',
password => 'xxxx',
autlogin => 'off',
redirect => '',
login => 'Log in',
]
);
$response->is_success or
die "Login failed: ", $response->status_line, "\n";

With an invalid username/password (as above), it gives:

LWP::UserAgent::new: ()
LWP::UserAgent::request: ()
LWP::UserAgent::send_request: POST http://toxici
LWP::UserAgent::_need_proxy: Not proxied
LWP:rotocol::http::request: ()
LWP:rotocol::collect: read 398 bytes

.... snipped ...

LWP:rotocol::collect: read 188 bytes
LWP::UserAgent::request: Simple response: OK

However, with a valid one it gives:

LWP::UserAgent::new: ()
LWP::UserAgent::request: ()
LWP::UserAgent::send_request: POST http://toxicice.com/login.php
LWP::UserAgent::_need_proxy: Not proxied
LWP:rotocol::http::request: ()
LWP::UserAgent::request: Simple response: Found
Login failed: 302 Found

$response->content is empty ('').

I updated some time ago to a more recent version of ActiveState Perl,
and probably LWP was upgraded as well. OTOH it might be a server thing.

perl -v
....
This is perl, v5.8.7 built for MSWin32-x86-multi-thread
....

query *
....
libwww-perl [5.803.0.1] Web API for Perl
....

(Complete script is at:
http://johnbokma.com/perl/phpbb-remote-backup.html )

( If you want to test but have no PHP board, mail: phpbb at johnbokma
dot com, and I arrange a test log in, don't create a test login
yourself, thanks )

--
John Small Perl scripts: http://johnbokma.com/perl/
Perl programmer available: http://castleamber.com/
Happy Customers: http://castleamber.com/testimonials.html

 
Reply With Quote
 
 
 
 
Brian Wakem
Guest
Posts: n/a
 
      08-16-2005
John Bokma wrote:

> Login failed: 302 Found
>
> $response->content is empty ('').



The page is printing a Location: header, which tells the browser to go
somewhere else. LWP::UserAgent does not follow this by default for POSTs.

Add this:-

push @{ $ua->requests_redirectable }, 'POST';


--
Brian Wakem
Email: http://homepage.ntlworld.com/b.wakem/myemail.png
 
Reply With Quote
 
 
 
 
J. Gleixner
Guest
Posts: n/a
 
      08-16-2005
John Bokma wrote:
> The following script used to work (Logs in to a PHPbb message board):
>
> use strict;
> use warnings;
>
> use LWP::UserAgent;
> use LWP:ebug qw(+);
>
> my $ua = LWP::UserAgent->new();
>
> my $response = $ua->post(
>
> "http://toxicice.com/login.php", [
>
> username => 'xxxxxxx',
> password => 'xxxx',
> autlogin => 'off',
> redirect => '',
> login => 'Log in',
> ]
> );
> $response->is_success or
> die "Login failed: ", $response->status_line, "\n";


> However, with a valid one it gives:
>
> LWP::UserAgent::new: ()
> LWP::UserAgent::request: ()
> LWP::UserAgent::send_request: POST http://toxicice.com/login.php
> LWP::UserAgent::_need_proxy: Not proxied
> LWP:rotocol::http::request: ()
> LWP::UserAgent::request: Simple response: Found
> Login failed: 302 Found


Just a quick guess... Dumping $ua:

$VAR1 = bless( {
'max_redirect' => 7,
'protocols_forbidden' => undef,
'no_proxy' => [],
'protocols_allowed' => undef,
'use_eval' => 1,
'requests_redirectable' => [
'GET',
'HEAD'
],
'from' => undef,
'timeout' => 180,
'agent' => 'libwww-perl/5.803',
'def_headers' => undef,
'parse_head' => 1,
'proxy' => {},
'max_size' => undef
}, 'LWP::UserAgent' );

Since a 302 means a redirect is being requested, and
'requests_redirectable' only contain GET and HEAD requests, possibly the
POST isn't seen as being redirecable. Maybe adding 'POST' to that
attribute, or possibly doing a GET will resolve it.

WWW::Mechanize might provide a better interface, for interacting with
the site.
 
Reply With Quote
 
John Bokma
Guest
Posts: n/a
 
      08-16-2005
Brian Wakem <> wrote:

> John Bokma wrote:
>
>> Login failed: 302 Found
>>
>> $response->content is empty ('').

>
>
> The page is printing a Location: header, which tells the browser to go
> somewhere else. LWP::UserAgent does not follow this by default for
> POSTs.
>
> Add this:-
>
> push @{ $ua->requests_redirectable }, 'POST';


Aargh, it was even in the manual Many thanks, it fixed my script. I
have no idea however, why it started to fail in the first place. Was POST
removed from the list recently? (I can't remember I updated PHPbb
recently).

--
John Small Perl scripts: http://johnbokma.com/perl/
Perl programmer available: http://castleamber.com/
Happy Customers: http://castleamber.com/testimonials.html

 
Reply With Quote
 
Brian Wakem
Guest
Posts: n/a
 
      08-16-2005
John Bokma wrote:

> Aargh, it was even in the manual Many thanks, it fixed my script. I
> have no idea however, why it started to fail in the first place. Was POST
> removed from the list recently? (I can't remember I updated PHPbb
> recently).



I don't recall POST ever being in that redirectable array. I've only been
using Perl for 5yrs though.


--
Brian Wakem
Email: http://homepage.ntlworld.com/b.wakem/myemail.png
 
Reply With Quote
 
J. Gleixner
Guest
Posts: n/a
 
      08-16-2005
Brian Wakem wrote:
> John Bokma wrote:
>
>
>>Aargh, it was even in the manual Many thanks, it fixed my script. I
>>have no idea however, why it started to fail in the first place. Was POST
>>removed from the list recently? (I can't remember I updated PHPbb
>>recently).


More likely is that the Web site changed something.

>
> I don't recall POST ever being in that redirectable array. I've only been
> using Perl for 5yrs though.


Much older versions used redirect_ok(), which was:

sub redirect_ok
{
# draft-ietf-http-v10-spec-02.ps from www.ics.uci.edu, specify:
#
# If the 30[12] status code is received in response to a request using
# the POST method, the user agent must not automatically redirect the
# request unless it can be confirmed by the user, since this might
change
# the conditions under which the request was issued.

my($self, $request) = @_;
return 0 if $request->method eq "POST";
1;
}
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Making urllib2's POST 302 handle same as Perl LWP's behaviour Karra Python 2 12-29-2010 02:03 PM
LWP and 302 redirects IanW Perl Misc 2 10-05-2006 05:52 PM
HTTP 302 (Response.Redirect) to mms:// URL gives error, to http:// is ok. David Morgan ASP General 1 02-24-2006 01:33 PM
ASP .NET Web Service URL:'http://localhost/WebService1. HTTP/1.1 302 Found hendy ASP .Net 0 12-20-2005 08:34 AM
error 302 Found steve HTML 2 11-08-2003 07:56 PM



Advertisments