Indy http 服务器会话运行不正常

Indy http server session doesn't work well

如何创建在 idhttpserver 中使用的会话?

我尝试了很多方法,但我无法访问 ARequestInfo.Session 或 AResponseInfo.Session 中的会话对象,它们始终为零。请帮忙

procedure TFolsecPermissionManager.IdHTTPServerCommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
  Command: TCommand;
  Session: TIdHTTPSession;
begin
  Session := IdHTTPServer.CreateSession(AContext, AResponseInfo, ARequestInfo);
  IdHTTPServer.SessionList.Add(Session);


  Command:= TCommand.Create;
  Command.Start(AContext, ARequestInfo, AResponseInfo);
end;

确保 TIdHTTPServer.SessionState 设置为 True。或者,您也可以将 TIdHTTPServer.AutoStartSession 设置为 True。默认情况下,它们都是 False

如果两者都是 True,则您无需手动调用 CreateSession(),因为它会为每个不携带现有会话 cookie 的传入请求自动调用。

如果 SessionState=TrueAutoStartSession=False,您确实需要在需要时手动调用 CreateSession()

但是,无论如何,不​​要手动调用 SessionList.Add(),因为 CreateSession() 会在内部为您调用。您不希望 SessionList 持有对同一个 TIdHTTPSession 对象的多个引用。