delphi7自带的IdCookie单元有问题. ( 积分: 0 )

  • 主题发起人 主题发起人 hxy2002
  • 开始时间 开始时间
H

hxy2002

Unregistered / Unconfirmed
GUEST, unregistred user!
function TIdNetscapeCookie.IsValidCookie(AServerHost: String): Boolean;
这个函数有问题.
Cookie例子:
CheckCode=42925; path=/; domain=gz.abc.com //Cookie 1
loginname=; path=/; domain=abc.com //Cookie 2
像第二个Cookie会认为是无效的Cookie
原因是 Cookie 1 的domain=gz.abc.com, Cookie 2 domain=abc.com
事实上这是同一个网站的Cookie
网上最新的Indy己经修复这个错误。

在这里给大家提个醒.用IdHttp做网站自动登陆时可能会碰到这情况。
 
这是修复后的代码

function TIdNetscapeCookie.IsValidCookie(AServerHost: String): Boolean;
begin
if IsValidIP(AServerHost) then // true if Server host is IP and Domain is eq to ServerHost
begin
result := AServerHost = FDomain;
end
else
begin
if IsHostname(AServerHost) then
begin
if IsHostName(FDomain) then
result := FDomain = RightStr(AServerHost,Length(FDomain))
else
result := FDomain = RightStr(DomainName(AServerHost),Length(FDomain));
end
else
begin
result := CompareText(FDomain, DomainName(AServerHost))=0;
// result := IndyPos(FDomain, AServerHost) > 0;
end;
end;
end;
 
谢谢兄弟把这个消息告诉大家。其实Indy随Delphi发布的所有版本都或多或少的有问题,的确是一件挺郁闷的事情。唉,目前Indy10还在DevSnapshot中,没有Finished,这也不得不说是一个遗憾。主要是开发人员不够导致的。
 
接受答案了.
 
后退
顶部