API по localhost:12345/api и
- как web сервер отдает по localhost:12345/app web приложение написанное на Dart/Flutter (лежит в подкаталоге www).
В коде это выглядит так:
WebRequestHandler.WebModuleClass := TRESTListenerWebModule;
WebRequestHandlerProc.MaxConnections := 1024;
FServer := TIdHTTPWebBrokerBridge.Create(nil);
FServer.DefaultPort:= APort;
FServer.MaxConnections:= 0;
FServer.ListenQueue:= 200;
// LGetSSLPassword := TSSLEventHandlers.Create;
// LIOHandleSSL := TIdServerIOHandlerSSLOpenSSL.Create(FServer);
// LIOHandleSSL.SSLOptions.SSLVersions := [
// TIdSSLVersion.sslvSSLv23,
// TIdSSLVersion.sslvSSLv3,
// TIdSSLVersion.sslvTLSv1,
// TIdSSLVersion.sslvTLSv1_1,
// TIdSSLVersion.sslvTLSv1_2];
// LIOHandleSSL.SSLOptions.Mode := sslmServer;
// LIOHandleSSL.SSLOptions.CertFile := 'cacert.pem';
// LIOHandleSSL.SSLOptions.RootCertFile := '';
// LIOHandleSSL.SSLOptions.KeyFile := 'privkey.pem';
// LIOHandleSSL.OnGetPassword := LGetSSLPassword.OnGetSSLPassword;
// FServer.IOHandler := LIOHandleSSL;
// FServer.OnQuerySSLPort := LGetSSLPassword.OnQuerySSLPort;
FServer.Active:= True;
…
FMVC := TMVCEngine.Create(Self);
FMVC.AddMiddleware(TCORSMiddleware.Create);
FMVC.AddMiddleware(TMVCStaticFilesMiddleware.Create(
'/app',
ExtractFilePath(GetModuleName(HInstance)) + 'www',
'index.html'));
FMVC.AddController(TRESTCopykeyServerController);
По http (http://localhost:12345/api и http://localhost:12345/app) все работает нормально
Но, если раскомментировать строчки, то по https (https://localhost:12345/api и https://localhost:12345/app) REST API работает нормально, а web приложение не открывается (в делфе много эксепшинов “ Not Found ”, а в консоли хрома соответственно много ошибок вида “ Failed to load resource: the server responded with a status of 404 ([EMVCException] Not Found)”).
Что я делаю неправильно?
а что network вкладка говорит?
https://github.com/viniciussanchez/RESTRequest4Delphi
Обсуждают сегодня