Автор Тема: Определить Redirect  (Прочитано 4453 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн _apple_

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Определить Redirect
« : 22 Марта 2005, 21:15:31 »
Привет,
вот над такой проблемой сижу.

обращаясь к странице через LWP::UserAgent, хочу узнать, был ли редирект. т.е. я знаю что он был, но как мне программно об этом узнать?

туда, куда послал запрос - status_line = 200OK, но на самом деле отображается совсем другая страница, на которую был с этой первой редирект.

-- begin first.html --
...

...
-- end first.html --

как на Perl это детектить и можно ли это вообще сделать?

Оффлайн 2NetFly

  • Модератор
  • Глобальный модератор
  • Постоялец
  • *****
  • Сообщений: 144
  • +0/-0
  • 0
    • Просмотр профиля
    • http://feotast.net
Определить Redirect
« Ответ #1 : 22 Марта 2005, 23:10:53 »
$ua = LWP::UserAgent->new( %options );

KEY                     DEFAULT
-----------             --------------------
agent                   "libwww-perl/#.##"
...
requests_redirectable   [\'GET\', \'HEAD\']
There Is More Than One Way To Do It (c)

Оффлайн 2NetFly

  • Модератор
  • Глобальный модератор
  • Постоялец
  • *****
  • Сообщений: 144
  • +0/-0
  • 0
    • Просмотр профиля
    • http://feotast.net
Определить Redirect
« Ответ #2 : 22 Марта 2005, 23:12:02 »
Хотя, раньше он только по коду редиректил.
There Is More Than One Way To Do It (c)

Оффлайн _apple_

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Определить Redirect
« Ответ #3 : 22 Марта 2005, 23:44:43 »
и что это? по какому коду?
header(\'Location: ...\'); ловит и так отлично.

а вот как реально отловить такие вещи?



или
JavaScript
document.location = "http://foo.home";

можно примерчик или идею?

Оффлайн 2NetFly

  • Модератор
  • Глобальный модератор
  • Постоялец
  • *****
  • Сообщений: 144
  • +0/-0
  • 0
    • Просмотр профиля
    • http://feotast.net
Определить Redirect
« Ответ #4 : 22 Марта 2005, 23:53:13 »
Если редирект выполняется отправкой соответствующего кода, LWP может это отловить и проследовать по URL, переданному в Location. Другие типы редиректа LWP не отлавливает. Определить редирект, выполняемый посредством мета-тэгов, довольно просто, а вот с JS -- очень сложно (читай невозможно).
There Is More Than One Way To Do It (c)

Оффлайн _apple_

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Определить Redirect
« Ответ #5 : 23 Марта 2005, 01:13:55 »
Ясно, а как получить массив всех пройденных хостов при редиректе?

допустим их три, 1 ссылаеться на 2-ой, а второй на 3-ий
все через Location.

Оффлайн _apple_

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Определить Redirect
« Ответ #6 : 23 Марта 2005, 02:02:07 »
$ua = LWP::UserAgent->new;
$request = HTTP::Request->new(\'GET\', \'http://foo.com\');
$response = $ua->request($request);

// как вот отсюда выдрать массив URL?
$requests = $response->previous;

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28