【问题标题】:Idhttp post session expireIdhttp 后会话过期
【发布时间】:2013-07-17 16:33:12
【问题描述】:

我正在使用 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

【问题讨论】:

  • 请显示HTTP服务器提供的原始 cookie,而不是TIdCookie的解释。

标签: delphi delphi-xe2 indy indy10


【解决方案1】:

根据 RFC 6265,当 Max-AgeExpires 都存在于 cookie 中时,Max-Age 优先,Expires 被忽略。Max-Age 以当前时钟时间的秒数表示。 Max-Age 的值 252028195945 是未来约 7991 年!添加当前时钟在 10004 年创建一个日期,TDateTime 无法表示(9999 是它支持的最高年份)。因此,您可能会遇到一个将到期日期设置为负值的舍入问题,从而表示过去的日期,而不是未来的日期,从而使 cookie 在被发送回 HTTP 服务器之前到期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 2013-01-22
    • 2012-05-29
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多