Я не впевнений, чого мені не вистачає, але, здається, не можу отримати свою політику CORS, що працює з клієнтами .NET Core 3.1 та Angular 8.
Startup.cs
:
public void ConfigureServices(IServiceCollection services)
{
// ...
// Add CORS policy
services.AddCors(options =>
{
options.AddPolicy("foo",
builder =>
{
// Not a permanent solution, but just trying to isolate the problem
builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
});
});
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
// Use the CORS policy
app.UseCors("foo");
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
Повідомлення про помилку на стороні клієнта:
Access to XMLHttpRequest at 'https://localhost:8082/api/auth/' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
ОНОВЛЕННЯ:
Хоча я була настройка CORS неправильно (і загальноприйнятий відповідь нижче і справді допомогти з цим) корінь питання НЕ був пов'язаний. Для додаткового контексту додаток працював цілком чудово при запуску програми API та Angular за допомогою CLI - у мене виникли проблеми лише після розгортання їх обох на веб-сервері.
«Фактична» проблема закінчилася тим , що був пов'язаний з з'єднанням SQL, який я тільки виявив після додавання плоско-файл реєстрації помилок в API і запустити трасування SQL Server , щоб знайти , що програма не може підключитися до SQL на всіх.
Я, як правило, очікував, що це лише поверне 500, і я зрозумів би проблему за 10 секунд - однак, неправильна конфігурація CORS означала, що 500 ніколи насправді не повертається, тому що проміжне програмне забезпечення CORS спочатку не вдалося. Це було дуже незручно сказати абсолютне найменше! . Однак я хочу додати, що тут на випадок, коли інші опиняються в цій ситуації, як я "переслідував неправильного кролика", якщо ви хочете. Після виправлення конфігурації CORS я зрозумів, що фактична проблема повністю не пов'язана з CORS.
TL; DR; - Іноді помилки на стороні сервера "Non-CORS" .NET можуть бути повернені як помилки CORS, якщо правила CORS не встановлені правильно
Список літератури:
https://medium.com/swlh/cors-headers-with-dot-net-core-3-5c9dfc664785
app.UseCors("foo");
ранішеapp.UseHttpsRedirection();