IdHTTP и IdCookieManager пропускают один файл cookie - PullRequest
0 голосов
/ 07 мая 2018

Я использую TIdHTTP для запроса веб-службы, после аутентификации я должен хранить информацию о сеансе, но IdCookieManager кажется потерянным всегда один cookie ...

Это мой очень простой фрагмент

procedure TForm1.Button5Click(Sender: TObject);
var
  i : Integer;
  Cookie : TIdCookies;
begin
  Memo1.Lines.Clear;
  try
    IdHTTP1.AllowCookies := true;
    IdHTTP1.CookieManager := IdCookieManager1;

    IdHTTP1.Get(Edit2.Text);

    if IdCookieManager1.CookieCollection.Count = 0
     then Memo1.Lines.Add('Empty');

    Cookie := IdCookieManager1.CookieCollection;


    for i := 0 to Cookie.Count -1 do
      Memo1.Lines.Add(Cookie.Cookies[i].Domain + ': ' + Cookie.Cookies[i].CookieName +
        '=' + Cookie.Cookies[i].Value);

  except
    on E : Exception do
      Memo1.Lines.Add(E.Message);
  end;
end;

Например, если я получу IdHTTP1.Get('www.google.com');, я получу два файла cookie (1P_JAR, NID), но если я сделаю это в веб-браузере, это даст три (1P_JAR, NID и CONSENT).

И это для всех URL, кажется, что он "теряет" всегда один cookie

1 Ответ

0 голосов
/ 07 мая 2018

Вы пытаетесь сравнить один ответ GET-запроса с ответом браузера. Это не одно и то же.

Если вы используете, например, Почтальон вы получите тот же результат (2 куки для www.google.com).

Я думаю, что вам следует изменить сторону сервисного сервера, если вы управляете им, или использовать его другим способом, если вы этого не делаете.

...