I ran your code and there was no indication in the output that any errors occurred.
200 200 Back 1 OK 200 Back 2 OK 200 Back 1 OK 200 Back 2 OK
I improved your test so we can actually see the problem:
#!perl use strict; use warnings; use WWW::Mechanize qw( ); my $mech = WWW::Mechanize->new(); #$mech->proxy(['http', 'ftp'], 'http://localhost:8080/'); my $url = 'http://www.vitoco.cl/test-ref'; #my $url = 'http://www.vitoco.cl/test-ref/index2.html'; $mech->get($url)->is_success() or die; @ARGV or die; for my $img ($mech->images) { if ($ARGV[0]) { $mech->head($img->url_abs())->is_success() or die; $mech->back() or die; } my $response = $mech->get($img->url_abs()); print($mech->status(), "\n"); print( ( $response->redirects() )[0]->request()->referer(), "\n"); $mech->back() or die; print("\n"); }
$ perl a.pl 0 200 http://www.vitoco.cl/test-ref 200 http://www.vitoco.cl/test-ref $ perl a.pl 1 200 http://www.vitoco.cl/test-ref/img1 200 http://www.vitoco.cl/test-ref/img1
When I upgraded WWW::Mechanize, the back returned false after a head.
$ perl a.pl 0 200 http://www.vitoco.cl/test-ref 200 http://www.vitoco.cl/test-ref $ perl a.pl 1 Died at a.pl line 22.
So yes, WWW::Mechanize is buggy.
if ( $request->method eq 'GET' || $request->method eq 'POST' ) { $self->_push_page_stack(); }
should be changed to
$self->_push_page_stack();
Please file a bug report.
In reply to Re: Referer and HEAD using WWW::Mechanize
by ikegami
in thread Referer and HEAD using WWW::Mechanize
by vitoco
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |