我必须浏览一个与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.pasIdCookie.pas完全从头开始重写,并且自2011年5月起一直可以正常工作,而且我还没有看到任何有关cookie处理不当的新报告。

关于delphi - 与indy的 session cookie,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9041412/

10-13 02:43