我必须浏览一个与indy的idhttp保持 session ID的特定站点。
我使用以下代码初始化我需要的组件。
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。我需要做什么才能发送包含该 session ID的cookie女巫。谢谢
最佳答案
如果未在新请求中发送回cookie,则TIdCookieManager
会在接收到cookie时拒绝它,或者将接受的cookie与新请求不匹配。您能否显示发送Cookie的实际Set-Cookie
响应 header ,以及您认为未正确发送Cookie的URL?您是否验证了在收到Cookie之后,它实际上以TIdCookieManager
结尾,然后发送了新请求?
您正在使用哪个版本的Indy?在2011年之前,较早的Indy 10版本确实破坏了cookie处理,这基本上是不可用的。但是在2011年初,IdCookieManager.pas
和IdCookie.pas
完全从头开始重写,并且自2011年5月起一直可以正常工作,而且我还没有看到任何有关cookie处理不当的新报告。
关于delphi - 与indy的 session cookie,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9041412/