IdCookieManager与IdHTTP不发送cookie

时间:2012-07-15 22:28:42

标签: delphi indy

我正在登录网站,试图让Cookie运行起来。根据我的理解,将IdCookieManager分配给IdHTTP并设置AllowCookies:=true应该是我需要做的所有事情,对吧?登录后我成功收到了cookie,但是当我尝试进一步导航时,cookie没有被发送。

这是我的代码:

procedure TForm1.Login;
var data: TStringList;
begin
  data:=TStringList.Create;

  try
    IdHTTP.Get('http://navratdoreality.cz/'); // Here I receive Set-Cookie

    data.Add('ACTION=check_adult');
    data.Add('check=18plus');

    Memo1.text:=IdHTTP.Post('http://navratdoreality.cz/',data); // Here the 
     // request contains the cookie and I get a succesfully-logged page in 
     // response, no more set-cookie
  except
    ShowMessage('err');
  end;

  data.Free;
end;

procedure TForm1.Navigate;
var ms:TMemoryStream;
begin
  ms:=TMemoryStream.Create;
  try
    IdHTTP.Get('http://www.navratdoreality.cz/?p=view&id='+Edit1.Text, ms); 
    // the request doesn't contain any cookies, even though the cookie from 
    // logging is saved in IdCookieManager

    ms.Position:=0;
    Memo1.Lines.LoadFromStream(ms, TEncoding.UTF8);
  except
    ShowMessage('err');
  end;

  ms.Free;
end;

我不知道可能是什么问题。我的Indy是10.5.8.0。如果您要查看该网站,请注意,其中一些是nsfw。

由于

1 个答案:

答案 0 :(得分:0)

好的,这是一个非常愚蠢的问题。问题是登录部分有http://navratdoreality.cz,而下一部分有http://www.navratdoreality.cz。两个URL都显示相同,但​​它们对于IdCookieManager显然是不同的,所以这就是为什么没有发送cookie。