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


Автор: Rexar 8.3.2006, 21:56
Вхожу методом post в аккаунт, затем методом get пытаюсь перейти по ссылке, но меня выбрасывает на предыдущую страницу где необходимо войти в аккаунт. Просмотрел снифером: "не отправляются cookies с моей программы". Почему так ?

Автор: Демо 9.3.2006, 09:45
Цитата(Rexar @ 8.3.2006, 21:56 Найти цитируемый пост)
"не отправляются cookies с моей программы". Почему так ?


Наверное ошибка в коде.

Автор: Rexar 9.3.2006, 10:01
Код примерно такой:

Код

procedure TForm1.Button2Click(Sender: TObject);
Var
  P:TStringStream;
begin
 IDHTTP1.HandleRedirects:=True;
 IDHTTP1.Request.Referer:='http://www.abrakadabra/enter.php';
 IDHTTP1.Request.ContentLength:=54;
 IDHTTP1.Request.CacheControl:='no-cache';
 IDHTTP1.Request.ContentType:='application/x-www-form-urlencoded';
 p:=TStringStream.Create('username=abrakadabra&password=abrakadabra&submit=Login');
 Memo1.Text:=IDHTTP1.Post('/pages/enter.php',P);
 P.Free;


end;

procedure TForm1.Button3Click(Sender: TObject);
begin
IDHTTP1.Request.ContentType:='';
IDHTTP1.Request.ContentLength:=-1;
IDHTTP1.Request.CacheControl:='';
IDHTTP1.Request.Referer:='http://www.abrakadabra/enter.php';
memo1.Text:=IDHTTP1.Get('/pages/infix.php');
end;

Автор: Snowy 9.3.2006, 10:38
TIdHTTP.AllowCookies := true;
И прикрути TIdCookieManager.

Автор: Rexar 9.3.2006, 10:52
TIdCookieManager У меня был прикручен, А где храняться cookies после вызова метода POST ? Может их как-то вручную впихнуть ?

Автор: Snowy 9.3.2006, 11:44
В менеджере они и хранятся.
А впихивать вручную их незачем. Все и так должно работать.
Вероятно дело все же не в печенье.

Автор: CyberBullDog 24.9.2006, 19:33
У меня такая же проблема возникла. Использую IdHTTP + IdCookieManager. Так он Cookie принимает, а отправлять не хочет. В чем проблема??? Indy стандартные от Delphi7

Автор: Matematik 24.9.2006, 19:57
У меня такое было, проблема была в имени домена например
http://www.ya.ru != http://ya.ru

Автор: CyberBullDog 24.9.2006, 23:58
Цитата(Matematik @ 24.9.2006,  19:57)
У меня такое было, проблема была в имени домена например
http://www.ya.ru != http://ya.ru

В моем случае дело не в этом. Не все так просто smile

Автор: Romikgy 25.9.2006, 08:39
Если хорошо покуришь индейцев , то поймешь , у них есть одна трабла , если куки ловишь из вверхнего урла типа
Цитата(CyberBullDog @  24.9.2006,  22:58 Найти цитируемый пост)
http://ya.ru

то во внутренней структуре , есть член называется Path так он там пустая строка , его надо изменить на '\'

Автор: CyberBullDog 25.9.2006, 10:16
Цитата(Romikgy @  25.9.2006,  08:39 Найти цитируемый пост)
надо изменить на '\' 

Слэш только другой нужен, а так спасибо ОГРОМНОЕ. Я в Mozille видел этот параметр, но не думал, что его придется вручную проталкивать.

Автор: CyberBullDog 25.9.2006, 21:25
Только вот одно меня смущает. Некоторые сайты вместо '/' в Path пишут другие строки. И как их уловить, если "Индейцы" их не принимают??? И что будет, если я автоматом туда '/' пропишу?

Автор: Romikgy 25.9.2006, 22:04
автоматом надо прописывать только тогда , когда этот путь пуст
в других случаях его не трогать smile  smile  smile 

Автор: dexi 25.12.2006, 06:16
Конкретно так:

Код

uses: .. IdCookie ..
..
..
{ставим на обработчик события onNewCookie; (ASender: TObject;
                                                            ACookie: TIdCookieRFC2109; var VAccept: Boolean);}

VAccept := true;
if ACookie.Path='' then ACookie.Path:='/';


Автор: Юрик217 10.4.2015, 21:21
Цитата(Matematik)

У меня такое было, проблема была в имени домена например
http://www.ya.ru != http://ya.ru



Цитата(dexi @ 25.12.2006,  06:16)
Конкретно так:

Код

uses: .. IdCookie ..
..
..
{ставим на обработчик события onNewCookie; (ASender: TObject;
                                                            ACookie: TIdCookieRFC2109; var VAccept: Boolean);}

VAccept := true;
if ACookie.Path='' then ACookie.Path:='/';





РЕБЯТА, СПАСИБО ВАМ ОГРОМНОЕ,  Matematik и dexi!!! smile  В моём случае (авторизовывался ВКонтакте без всякого API - так нужно мне...), этот способ помог smile , тоже куки принимал и не отправлял smile  (смотрел в снифере - без него как без рк)... Правда у меня проблема была с доменом, но сама идея меня натолкнула.


Код

uses: .. IdCookie ..  //Я ЗАМЕТИЛ (после создания события onNewCookie) ЧТО У МЕНЯ ЕГО НЕТ 
..
..
onNewCookie; (ASender: TObject; ACookie: TIdCookieRFC2109; var VAccept: Boolean);}
.
..
...

procedure TForm1.IdCookieManager1NewCookie(ASender: TObject;
  ACookie: TIdCookieRFC2109; var VAccept: Boolean);
begin
VAccept := true;

//Для престраховки -на всякий пожарный, решил оставить
if ACookie.Path=' ' then ACookie.Path:='/';

//Вот тут моя проблема РЕШИЛАСЬ!! 
if ACookie.Domain='.vk.com' then ACookie.Domain:='vk.com';
end;




Теперь куки передаются как надо, методами пост и гет стало возможным бродить по страничкам ВКонтакте.   smile 


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