Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2011, 20:32   #1
inconnect
 
Регистрация: 15.06.2011
Сообщений: 6
По умолчанию Как обработать редирект top.location в delphi

После отправки данных методом POST в IdHTTP(Indy)
Код:
IdHTTP.HandleRedirects := true;
Response := IdHTTP.Post('http://someUrl.ru/', LoginInfo);
Получаю в Response вот это чудо:
Код:
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=windows-1251">
</head>
<body>

<script language="javascript">

document.domain = 'домен';


top.location = 'урл который перенаправляется во всех браузерах, но не в Indy';

</script>

</body>
</html>
А сам статус в ResponseHeader-е выдает HTTP/1.0 200 OK

Вопрос. Как мне обработать этот редирект??? Помогите пожалуйста, уже неделю головой бьюсь.

P.S. Delphi 2010, Indy 10.5

Последний раз редактировалось inconnect; 15.06.2011 в 21:03.
inconnect вне форума Ответить с цитированием
Старый 15.06.2011, 22:48   #2
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Вручную. Копируйте адрес, куда идет перенаправление, и делайте запрос
Voody вне форума Ответить с цитированием
Старый 15.06.2011, 23:29   #3
fenryr
Пользователь
 
Регистрация: 20.05.2010
Сообщений: 28
По умолчанию

indy не перенаправляет так ка кон не интерпретирует javascript, обрабатывает только заголовки ответа. тут одним indy не обойдешься. либо писать интерпретатор js. либо использовать twebbrowser
fenryr вне форума Ответить с цитированием
Старый 15.06.2011, 23:37   #4
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Цитата:
Сообщение от fenryr Посмотреть сообщение
indy не перенаправляет так ка кон не интерпретирует javascript, обрабатывает только заголовки ответа. тут одним indy не обойдешься. либо писать интерпретатор js. либо использовать twebbrowser
Зачем интерпретатор и twebbrowser ))
Человек прямым текстом получает ссылку для перенаправления. Куда проще ее скопировать и использовать.
Voody вне форума Ответить с цитированием
Старый 16.06.2011, 07:31   #5
inconnect
 
Регистрация: 15.06.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Voody Посмотреть сообщение
Вручную. Копируйте адрес, куда идет перенаправление, и делайте запрос
Пробовал вот так:

Код:
        IdHTTP.Request.Referer := 'previous url';
        Response := IdHTTP.Get('redirect url');
Не получается. Вторым запросом меня опять перенаправляют на главную(((
inconnect вне форума Ответить с цитированием
Старый 16.06.2011, 13:08   #6
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

покажите здесь или в ЛС адрес сайта

AllowCookies у IdHTTP включено (или кукименеджер подключен)?

Последний раз редактировалось Voody; 16.06.2011 в 16:02.
Voody вне форума Ответить с цитированием
Старый 16.06.2011, 19:50   #7
inconnect
 
Регистрация: 15.06.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Voody Посмотреть сообщение
покажите здесь или в ЛС адрес сайта

AllowCookies у IdHTTP включено (или кукименеджер подключен)?
Куки включены.
А вот и сама ссылка: http://1.chat.mail.ru/cgi-xml/chat
inconnect вне форума Ответить с цитированием
Старый 16.06.2011, 20:07   #8
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Цитата:
Сообщение от inconnect Посмотреть сообщение
Куки включены.
А вот и сама ссылка: http://1.chat.mail.ru/cgi-xml/chat
И что куда посылать? В программе вы посылаете какие-то данные на этот адрес.
Voody вне форума Ответить с цитированием
Старый 16.06.2011, 20:39   #9
inconnect
 
Регистрация: 15.06.2011
Сообщений: 6
По умолчанию

Сначала делаю авторизацию по этой ссылке:
http://win.mail.ru/cgi-bin/auth
Далее добавляю в куки и в TStringList данные из этой формы:
http://chat.mail.ru/
И потом делаю POST-отправку нашего листа сюда:
http://1.chat.mail.ru/ (цифра 1 я так понял номер сервера, их всего три(1,2,3), берутся из селекта, где мы выбрали комнату например: 1:123132, где после двоеточия это номер самой комнаты)

После POST-запроса и выскакивает это
Код:
<script language="javascript">
document.domain = 'домен';
top.location = 'урл который перенаправляется во всех браузерах, но не в Indy';
</script>
Отследил все HttpAnalyzer-ом и сравнил его с браузерскими запросами. Все так и должно быть. Но у меня то не редиректит indy, поэтому делаю еще один get:
http://1.chat.mail.ru/cgi-xml/chat
И после этого я опять оказываюсь здесь:
http://chat.mail.ru/
inconnect вне форума Ответить с цитированием
Старый 16.06.2011, 22:11   #10
inconnect
 
Регистрация: 15.06.2011
Сообщений: 6
По умолчанию

Спасибо за внимание, сам разобрался)
inconnect вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработать строку (Delphi) Jason Bobs Помощь студентам 2 21.09.2010 22:15
Margin-top отменить для вторйо таблицы, как? gattaka HTML и CSS 7 02.06.2010 03:14
Как обработать не валидный коннект?(delphi,winsock) zotox Работа с сетью в Delphi 1 02.08.2009 19:46
Always on top или как заствить RichEdit стоять смирно nusik Общие вопросы C/C++ 11 03.07.2009 13:55
delphi - как обработать ошибку перехода на пустой cd-rom? yourself Помощь студентам 2 10.03.2008 23:01