Сессионное печенье с инди - PullRequest
6 голосов
/ 28 января 2012

Я должен просмотреть определенный сайт, на котором хранится идентификатор сеанса с idhttp в indy.

Я использую следующий код для инициализации необходимых мне компонентов.

procedure InitSession;
begin
  Initalized := True;
  try
  ihttp := TIdHTTP.Create(nil); //the variables are declared globally
  idCookie := TIdCookieManager.Create(nil);
  ihttp.ConnectTimeout := 5000;
  ihttp.AllowCookies := true;
  ihttp.HandleRedirects := true;
  ihttp.CookieManager := idCookie;
  except
  Initalized := False;
  end;
end;

Проблема в том, что, когда я делаю запрос, cookie не отправляется.Что мне нужно сделать, чтобы отправить cookie-файл, содержащий идентификатор сессии.Спасибо

Ответы [ 2 ]

6 голосов
/ 28 января 2012

Если файл cookie не отправляется обратно в новых запросах, то либо TIdCookieManager отклонил файл cookie, когда он был получен, либо не соответствует принятому файлу cookie новым запросам.Можете ли вы показать фактические Set-Cookie заголовки ответа, которые отправляют файлы cookie, и URL-адреса, на которые, по вашему мнению, файлы cookie отправляются неправильно?Проверяли ли вы, что после получения файла cookie он действительно заканчивается в TIdCookieManager перед отправкой нового запроса?

Какую версию Indy вы используете?До 2011 года более ранние выпуски Indy 10 действительно имели прерванную обработку файлов cookie, которая была в основном непригодна для использования.Но в начале 2011 года IdCookieManager.pas и IdCookie.pas были полностью переписаны с нуля, а с мая 2011 года они работают должным образом, и я не видел новых сообщений о неправильном обращении с файлами cookie.

0 голосов
/ 02 февраля 2012

Есть ли проблема с файлами cookie, которые не имеют свойства DOMAIN? IdCookie, поставляемый с DXE2, не может анализировать файлы cookie, которые НЕ имеют свойства MAX-AGE, имеют свойство EXPIRES и НЕ имеют свойства DOMAIN. См. IdCookie.pas 675, где, кажется, S имеет неожиданное значение (оставшееся после анализа свойства expires).

...