2012-07-15 130 views
1

我登录到一个网站,试图让饼干运行。据我所知,将IdCookieManager分配给IdHTTP并设置AllowCookies:=true应该是我需要做的一切,对吧?登录后,我成功接收cookie,但当我尝试进一步浏览时,cookie未被发送。IdCookieManager与IdHTTP不发送饼干

这里是我的代码:

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。

谢谢

回答

0

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

+0

从cookie的角度来看,'navratdoreality.cz'和'www.navratdoreality.cz'是独立的域名,因此不能共享cookie,除非cookie的属性允许共享。 – 2012-07-16 23:36:38