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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2011, 12:55   #1
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию TIdHTTP и cookies

пытаюсь залогинеться на сайте использую TIdHTTP + TIdCookieManager
не выходит, куки запоминаются но не все. Смотрел через снифер когда делаю те же самые действия но через браузер передаются так же куки PHPSESSID и notauth , а TIdHTTP их запоминает, он отправляет без запрос без этих 2-х куков
пробовал добавить так:
Код:
IdCookieManager1.AddCookie('PHPSESSID','73002ba1371a593bc082196170335379');
    IdCookieManager1.AddCookie('notauth','52240599');
смотрю в снифере, опять передает без этих 2-х, почему так?
fate вне форума Ответить с цитированием
Старый 18.01.2011, 02:32   #2
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

TIdCookieManager Не оязательно использовать для получения кукисов. Я его никогда не кидаю на форму.

Цитата:
смотрю в снифере, опять передает без этих 2-х, почему так?
Инди "Игнарирует" некоторые кукисы или домены. Возможно это связано с тем, что разработчики решили подогнать кукисы под спецификацию Cookie 2.0
Цитата:
Only hosts within the specified domain can set a cookie for a domain and
domains must have at least two (2) or three (3) periods in them to prevent
domains of the form: ".com", ".edu", and "va.us". Any domain that fails
within one of the seven special top level domains listed below only require
two periods. Any other domain requires at least three. The seven special
top level domains are: "COM", "EDU", "NET", "ORG", "GOV", "MIL", and "INT".
(Мое предположение. Цитату взял со стороннего форума.)

А кукисы лучше обрабатывать вручную. Делать GET/POST запрос
Код:
IdHTTP.Get('http://site.com')
После записывать ответ от сервера в некоторую переменную.
Код:
s := IdHTTP.Response.RawHeaders.text
Затем парсить кукисы.
Код:
  while Pos('Set-Cookie', s) <> 0 do
  begin
    y := Pos('Set-Cookie', s);
    i := PosEx(': ', s, y) + 2;
    new.Add(Copy(s, i, PosEx(';', s, i) - i));
    Delete(s, y, 10);
  end;
Ну а перед следующим GET/POST запросом вставлять ранее полученные кукисы.
Код:
  s := 'Cookie: ';
  for i := 0 to CookieList.Count - 1 do
    s := s + CookieList.Strings[i] + '; ';

  IdHTTP.Request.CustomHeaders.text := s;
Перед использованием такого метода необходимо отключить принятие кукисов.
Код:
IdHTTP.AllowCookies := false;
Пример реализации можно посмотреть здесь. http://programmersforum.ru/showpost....37&postcount=3
kangreon вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
indy канкретней Tidhttp bulldog5293 Работа с сетью в Delphi 5 25.01.2011 21:28
Indy (TIdHTTP) в D6 и D2009 Legion2003 Работа с сетью в Delphi 7 07.11.2009 18:26
Странный таймаут TidHTTP AXS Компоненты Delphi 0 12.10.2009 12:46
E-Port + TIdHTTP Satim Работа с сетью в Delphi 9 17.04.2009 10:26