我正在使用Idhttp(带有delphi-xe2的indy10)发布表单,但是我从网站上获得了会话过期消息,尽管我已经设置了cookie管理器。谢谢。
procedure TForm2.IdCookieManager1NewCookie(ASender: TObject; ACookie: TIdCookie;
var VAccept: Boolean);
begin
ShowMessage(Acookie.CookieText);
end;
ShowMessage的结果是:ASP.NET_SessionId=enn1xnqde1o1rduedels5fqp; Path=/; Domain=www8.ticketingcentral.com; HttpOnly; Max-Age=252028195945; Expires=Fri, 31-Dec-9999 16:59:59 GMT
答案 0 :(得分:2)
如果Cookie中存在Max-Age
和Expires
,则Max-Age
优先级,并且根据RFC 6265忽略Expires
。Max-Age
表示为从当前时钟时间开始的秒数。未来Max-Age
252028195945
值约为7991年!添加当前时钟会在10004年创建一个日期,TDateTime
无法表示(9999是它支持的最高年份)。因此,您可能会遇到一个舍入问题,将到期日期设置为负值,从而表示过去而不是未来的日期,从而使Cookie在将其发送回HTTP服务器之前到期。