![Приложение Angular не может получить доступ к внутреннему API в ASE](https://rvso.com/image/1692539/%D0%9F%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5%20Angular%20%D0%BD%D0%B5%20%D0%BC%D0%BE%D0%B6%D0%B5%D1%82%20%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C%20%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%20%D0%BA%20%D0%B2%D0%BD%D1%83%D1%82%D1%80%D0%B5%D0%BD%D0%BD%D0%B5%D0%BC%D1%83%20API%20%D0%B2%20ASE.png)
В настоящее время для нашего решения разработана и реализована следующая инфраструктура. Наше приложение Angular развернуто в Front-End App Service, а наше приложение .NET развернуто в Back-End App Service.
У нас есть общедоступный URL (например,https://publicurl.example.com), который указывает на нашу фронтенд-службу приложений. Всякий раз, когда я пытаюсь вызвать бэкенд-API (например,https://backend.ase-01.appserviceenvironment.net/v1/api/orders), я получаю ошибку ERR_CONNECTION_TIMED_OUT.
После дальнейшего расследования нашей командой по инфраструктуре они обнаружили, что это происходит потому, что Angular, будучи клиентским приложением, напрямую вызывает наше бэкенд-приложение. Поскольку бэкенд находится внутри VNET, приложение Angular не может разрешить FQDN, что приводит к ошибке тайм-аута.
Одним из найденных нами решений было создание правила в App GW для маршрутизации всех запросов /v1/* в бэкэнд-приложение. Это работает, но частично раскрывает приложение для публичного интернета, что в какой-то степени противоречит изначальной цели его размещения внутри VNET.
Есть ли лучшее решение этой проблемы?