Как отправить 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.

В вашем случае самоподписанный сертификат является (недоверенным) сертификатом, который не разрешает соединение с действительным, потому что его нет в доверенном хранилище на сервере.

Итак, есть два решения:

  1. Добавьте самоподписанный сертификат в доверенное хранилище на сервере, на котором работает приложение angular. (Но в вашем случае вы не можете сделать это, потому что у вас нет доступа к доверенному хранилищу gitpages.

  2. Используйте действующий сертификат. Например из LetsEncrypt.

Для этого случая нет других решений. Я пытался найти обходной путь, но нет решения из-за политики "того же происхождения", которую я уже описал выше.

Другие вопросы по тегам