У меня есть конфигурация launch.json со следующим:
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:4200",
"webRoot": "${workspaceFolder}"
}
Всякий раз, когда я пытаюсь сделать запрос GET к своему веб-API ASP.NET Core, я получаю Не удалось загрузить ресурс: net :: ERR_CERT_AUTHORITY_INVALID.
Всякий раз, когда я пытаюсь выполнить запрос POST, он терпит неудачу во время предварительного запроса OPTIONS. ВАРИАНТЫ https: // localhost: 5001 / api / products /
Есть идеи, почему это происходит только при запуске приложения Angular через отладчик для Chrome с использованием вышеуказанных настроек? Если я запускаю сайт обычно с помощью ng, все вызовы api с использованием клиента Angular Http работают нормально.
Вот как я делаю запрос в своей службе Angular:
const httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};
insertProduct(product: Product) {
return this.http.post(this.productsUrl, product, httpOptions);
}
Я считаю, что проблема связана со следующей строкой в моем Web API Startup.cs:
app.UseHttpsRedirection();
Есть ли способ сообщить приложению angular при запуске отладчика chrome работать по ssl с действующим сертификатом?
@edward Веб-api - это веб-API app.net core 2.1. Приложение angular - это автономное приложение Angular, созданное с помощью ng new, а не dotnet new. Когда я запускаю проект веб-API, я могу успешно вызывать его следующими способами: Postman и ng serve (приложение Angular работает нормально). Допустим, я хочу отлаживать приложение Angular с помощью отладчика Chrome в vscode. Когда я запускаю это, ни один из вызовов API не работает. Я пробовал и https, и http.
Какой у вас Startup.cs
в веб-API? Вы настроили Включение запросов между источниками (CORS) в ASP.NET Core в веб-API?
@Edward Да, я настроил Cors, чтобы разрешить все. Похоже, моя проблема заключается в следующем параметре в моем ASP.NET Core Web API Startup.cs: app.UseHttpsRedirection () ;. Я предполагаю, что при запуске Angular через отладчик Chrome он загружается по адресу http: // localhost / 4200, вероятно, без действительного сертификата. Странно, что при запуске ng serve работает. Возможно, что-то кешируется или хранится в браузере, что не сохраняется при запуске отладчика Chrome. Поскольку отладчик Chrome открывает окно почти так, как будто это вкладка инкогнито.
@Edward В качестве временного решения я закомментировал app.UseHttpsRedirection (); в моем методе настройки Startup.cs. Это делает так, что вызовы http: // localhost: 5000 работают без перенаправления на https. В приложении angular мне просто пришлось изменить URL-адрес api на http: // localhost: 5000 / api / products. Несмотря на то, что это работает, было бы неплохо когда-нибудь выяснить, как использовать https с веб-api и по-прежнему вызывать его через приложение Angular, не отказывая мне.
Что такое тип проекта? Это шаблон Angular Core или вы разрабатываете Angular и веб-api отдельно? Какой у вас
Startup.cs
? Могли бы вы после запуска проекта получить доступ кhttps://localhost:5001/api/products/
из веб-браузера? Есть ли какой-нибудь репродуктивный проект?