Как отправить HTTPS-запрос от Angular-интерфейса на сервер, защищенный самозаверяющим сертификатом?
Я не вижу, что не так с моим запросом из внешнего приложения Angular.
Я ранее отправил https://thalasoft.com:8443/api/
запрос от того же браузера и подтвердил, что я в порядке самоподписанный сертификат.
Но при попытке его из интерфейсного приложения на https://stephaneeybert.github.io/stephaneeybert/ng-zero/login
который отправляет запрос https://thalasoft.com:8443/api/auth/login
консоль отладки браузера показывает Status Code: 504 Gateway Timeout (from ServiceWorker)
Я должен добавить, что точно такой же логин этого Angular интерфейсного приложения и сервера API работает нормально, когда оба обслуживаются из моего localhost
компьютер разработчика. Эта проблема возникает, только когда Angular front-end обслуживается с GitPages, а сервер API - с моего удаленного сервера.
1 ответ
У проблемы, с которой вы столкнулись, нет окончательного решения, но я хотел бы объяснить вам проблему, с которой вы столкнулись здесь.
Вы хотите сделать http-вызов с проверенного ssl-сайта на неподтвержденный ssl-сайт. Это означает следующее: HTTP-вызовы разрешены только на серверах того же происхождения, что означает от проверенного (доверенного) ssl-сайта до проверенного (доверенного) ssl-сайта или не ssl-не-ssl.
В вашем случае самоподписанный сертификат является (недоверенным) сертификатом, который не разрешает соединение с действительным, потому что его нет в доверенном хранилище на сервере.
Итак, есть два решения:
Добавьте самоподписанный сертификат в доверенное хранилище на сервере, на котором работает приложение angular. (Но в вашем случае вы не можете сделать это, потому что у вас нет доступа к доверенному хранилищу gitpages.
Используйте действующий сертификат. Например из LetsEncrypt.
Для этого случая нет других решений. Я пытался найти обходной путь, но нет решения из-за политики "того же происхождения", которую я уже описал выше.