IdHttpServer не обслуживает файл - PullRequest
0 голосов
/ 02 апреля 2020

У нас возникла проблема с вызовом веб-сайтов из Indy TIdHTTPServer в Delphi. Иногда Indy может обслуживать мультимедийные файлы, иногда нет, но проблема заключается только в том, что мы звоним по сети. Он работает очень хорошо при вызове через localhost.

Например, если мы вызываем его по сети, например, https://192.168.1.113:5000/?page=index, то Indy не может обслуживать некоторые файлы, если мы вызываем как https://localhost:5000/?page=index, он работает хорошо.

procedure TFolsecPermissionManager.IdHTTPServerCommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
  Command: TCommand;
  sFileName: string;
begin
 // IdHTTPServer.CreateSession(AContext, AResponseInfo, ARequestInfo);
  AContext.Connection.Socket.ReadTimeout := 6000000;
  if CommandRequestFileType(ARequestInfo.URI) = 'MEDIA' then
  begin
    //AResponseInfo.ContentStream := CommandGetMedia(ARequestInfo.URI);
    sFileName := CommandGetMedia2(ARequestInfo.URI);
    if sFileName <> '' then
    begin
      AResponseInfo.ContentType := GetContentType(ARequestInfo.URI);
      AResponseInfo.ServeFile(AContext, sFileName); // --- here doesn't work to serve file
    end else
      AResponseInfo.WriteContent;
    exit;
  end else begin
    Command:= TCommand.Create;
    try
      Command.AContext := AContext;
      Command.ARequestInfo := ARequestInfo;
      Command.AResponseInfo := AResponseInfo;
      Command.Synchronize;
    finally
      Command.Free;
    end;
  end;

end;

image

...