Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Циклический редирект при отправке данных формы мет


Автор: TechnoMag 26.10.2010, 11:01
Вот как перенаправляется браузер при добавлении объявления на сайт без авторизации:

Код

   1   POST    302     1,43 K    text/html  http://www.avito.ru/additem            /additem/confirme  
   2   GET     200     4,76 K    text/html  http://www.avito.ru/additem/confirme                      
   ......
   15  POST    302     347       text/html  http://www.avito.ru/additem/confirme   /additem/finish    
   16  GET     200     4,57 K    text/html  http://www.avito.ru/additem/finish                        
   ......



1 и 2 запросы это валидация формы.
15 и 16 непосредственно добавление объявления.

При работе программы почему-то происходит редирект с additem/confirmme на additem на 2 запросе, и далее циклически выполняются 1 и 2. Причем данные формы сохраняются.

Отправка запроса программой:

Код

   1  POST    302     20,89 K   text/html  http://www.avito.ru/additem            /additem/confirme  
   2  POST    302     549       text/html  http://www.avito.ru/additem/confirme   /additem           
   3  POST    302     20,89 K   text/html  http://www.avito.ru/additem            /additem/confirme  
   4  POST    302     549       text/html  http://www.avito.ru/additem/confirme   /additem           


HandleRedirects:=true;
RediretcMaximum:=4; // по умолчанию 15, но это сути не меняет

Собственно говоря программа не получает страницу, где есть кнопка "Готово >".

З.Ы. На счет правильности формирования хидера не уверен.


Автор: TechnoMag 26.10.2010, 20:52
Выяснил, что кукиМенеджер не получает куки, а они есть, и нужны.
Похоже он вообще не работает.

Автор: Matematik 26.10.2010, 23:35
indy во всей красе  smile 
Тут несколько вариантов:
- искать другую библиотеку
- править сам indy
- писать "костыли"

Давно с этим сталкивался.
Кривой автоматический редирект просто отключал и отрабатывал перенаправление кучками (см. kостыль).
В куки-манагер свой костыль добавил, почему и как сейчас уже не помню, но получилось так - http://dl.dropbox.com/u/11362313/scrot/indihttp.png метод TIdCustomHTTP.ProcessCookies() в модуле IdHttp.pas
Это про девятую версию, с десятой не в курсе, но догадываюсь что аналогично.

Автор: TechnoMag 27.10.2010, 11:02
В десятой версии приведенный вами кусок кода править не пришлось.
Не подскажите, где почитать по управлению куками с отключенным редиректом?

Автор: Matematik 27.10.2010, 11:30
Цитата(TechnoMag @  27.10.2010,  11:02 Найти цитируемый пост)
Не подскажите, где почитать по управлению куками с отключенным редиректом? 

Хм, что не так с куками? Они запоминаются с редиректом и без.

Автор: TechnoMag 27.10.2010, 11:42
Сейчас они у меня не запоминаются.

Автор: Matematik 27.10.2010, 19:09
Значит в десятой версии ещё что-то поломали.
Вот почему я пользовался 9й.


Автор: TechnoMag 30.10.2010, 17:49
Цитата(Matematik @ 27.10.2010,  18:09)
Значит в десятой версии ещё что-то поломали.
Вот почему я пользовался 9й.

Перенес проект на Delphi 7. Стало лучше. Но почему-то cookieManager получает не все куки.
Подозреваю, что куки с символом "_" не обрабатываются. Программно добавить такой кук нельзя, т.к. он не константный (генерируемый).

Можно ли как-то перехватить куки до поступления их в кукиМенеджер?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)