Forum Webscript.Ru
Программирование => Perl => Тема начата: _apple_ от 22 Марта 2005, 21:15:31
-
Привет,
вот над такой проблемой сижу.
обращаясь к странице через LWP::UserAgent, хочу узнать, был ли редирект. т.е. я знаю что он был, но как мне программно об этом узнать?
туда, куда послал запрос - status_line = 200OK, но на самом деле отображается совсем другая страница, на которую был с этой первой редирект.
-- begin first.html --
...
...
-- end first.html --
как на Perl это детектить и можно ли это вообще сделать?
-
$ua = LWP::UserAgent->new( %options );
KEY DEFAULT
----------- --------------------
agent "libwww-perl/#.##"
...
requests_redirectable [\'GET\', \'HEAD\']
-
Хотя, раньше он только по коду редиректил.
-
и что это? по какому коду?
header(\'Location: ...\'); ловит и так отлично.
а вот как реально отловить такие вещи?
или
JavaScript
document.location = "http://foo.home";
можно примерчик или идею?
-
Если редирект выполняется отправкой соответствующего кода, LWP может это отловить и проследовать по URL, переданному в Location. Другие типы редиректа LWP не отлавливает. Определить редирект, выполняемый посредством мета-тэгов, довольно просто, а вот с JS -- очень сложно (читай невозможно).
-
Ясно, а как получить массив всех пройденных хостов при редиректе?
допустим их три, 1 ссылаеться на 2-ой, а второй на 3-ий
все через Location.
-
$ua = LWP::UserAgent->new;
$request = HTTP::Request->new(\'GET\', \'http://foo.com\');
$response = $ua->request($request);
// как вот отсюда выдрать массив URL?
$requests = $response->previous;