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


Автор: otRock 16.5.2010, 03:06
Код
IdHTTP1.Get('http://pda.qip.ru/reg/captcha/');

После этой строки должен установиться кук PHPSESSID, но его нет. Проблема с IdCookieManager.

Скорее всего проблема из-за того, что должен установиться домен qip.ru, а запрос шлётся на pda.qip.ru
Версия Indy стандартная от Delphi 2010

Как решить проблему?

Автор: DoZENT 16.5.2010, 08:48
otRock, попробуй обновить indy на самую последнюю версию. Мне помогало smile

Автор: otRock 16.5.2010, 21:14
Проблему решил следующим образом
в файле IdCookieManager.pas заменить
Код
procedure TIdCookieManager.DoAdd(ACookie: TIdCookieRFC2109; ACookieText: String; AURL: TIdURI);
begin
  ACookie.CookieText := ACookieText;
  if Length(ACookie.Domain) = 0 then
на
Код
procedure TIdCookieManager.DoAdd(ACookie: TIdCookieRFC2109; ACookieText: String; AURL: TIdURI);
begin
  ACookie.CookieText := ACookieText;
  if not TextStartsWith(ACookie.Domain, '.') then ACookie.Domain := '.'+ACookie.Domain;
  if Length(ACookie.Domain) = 0 then


Автор: creas0ft 27.5.2010, 14:38
Indy 10.5.7 - такая же фигня но на куки с доменом точкой типа .domen.com
Данного кода не нашел в  IdCookieManager.pas

Автор: creas0ft 27.5.2010, 15:15
Код

 for i := 0 to IdCookieManager1.CookieCollection.Count - 1 do
    begin
      if IdCookieManager1.CookieCollection[i].Domain[1] = '.' then
      begin
        IdCookieManager1.CookieCollection[i].Domain := copy(IdCookieManager1.CookieCollection[i].Domain, 2, length(IdCookieManager1.CookieCollection[i].Domain));
      end;
    end;


Это решение в лоб без правки сырцов, вдруг кому надо

Автор: ange007 29.8.2010, 21:19
Ребят, есть у кого-то рабочий билд последних IndyTiburon?
Который нормально с куками работает?

В последних просто вместо:
Код

procedure TIdCookieManager.DoAdd(ACookie: TIdCookieRFC2109; ACookieText: String; AURL: TIdURI);

вот это
Код

procedure TIdCookieManager.DoAddServerCookie(ACookie: TIdCookieRFC2109; ACookieText: String; AURL: TIdURI);

с большим ко-вом других изменений.

И добавление 
Код

if not TextStartsWith(ACookie.Domain, '.') then ACookie.Domain := '.'+ACookie.Domain;

не помогает.

Заранее спасибо.

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