Хотя на первый взгляд все выглядит просто, есть много способов решить ваши проблемы. Сначала немного информации о CORS: браузер автоматически добавляет заголовок X-Requested-With, нет необходимости добавлять его в ваш угловой запрос. Браузер будет искать Access-Control-Allow-Origin в заголовках response - в противном случае вы можете указать браузеру доверять чему угодно, в точности, что мешает CORS. (Серверная сторона должна решить, разрешены ли запросы)
Итак, если вы хотите включить CORS, вам нужно настроить это в вашем приложении asp.net, что вы и сделали
app.UseCors( options => options.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
Но вам не нужен CORS - ваша установка тщательно продумана, чтобы избежать необходимости: CORS станет активным только тогда, когда вы сделаете запрос из разных источников. Вы настроили обратный прокси-сервер nginx таким образом, чтобы можно было запрашивать API из того же источника, куда вы загрузили приложение Angular.
Причина, по которой это не работает, заключается в том, что ваш браузер не может подключиться к внутреннему имени хоста kubernetes k8s-demo-api
, поскольку это внутреннее имя в кластере kubernetes.
Я предполагаю, что вы добавили hostPort в контейнер вашего модуля внешнего интерфейса, и что nginx работает на порте 4200, обслуживающем приложение Angular по корневому пути, а обратный путь прокси - /api
.
Самое простое решение, если все остальные настройки работают: измените URL для API, чтобы использовать созданный обратный путь прокси
api_url: "http://192.168.99.100:4200/api"
На скриншоте видно, что вы пытаетесь запросить API без надлежащего протокола (в данном случае http: //), убедитесь, что Angular HttpClient настроен правильно.