Non sono sicuro di cosa mi manchi, ma non riesco a far funzionare la mia politica CORS con il client .NET Core 3.1 e 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();
});
}
Messaggio di errore Lato client:
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.
AGGIORNARE:
Anche se io stavo configurando CORS in modo non corretto (e la risposta accettata sotto fatto infatti aiutare in questo) la radice del problema è correlato. Per un ulteriore contesto, l'app funzionava perfettamente durante l'esecuzione dell'API e dell'app Angular utilizzando l'interfaccia della riga di comando. Ho riscontrato questo problema solo dopo averli distribuiti su un server Web.
Il problema "effettivo" è stato correlato alla connessione SQL, che ho scoperto solo dopo aver aggiunto la registrazione degli errori di file flat all'API e aver eseguito una traccia di SQL Server per scoprire che l'app non era in grado di connettersi affatto a SQL.
Normalmente mi aspetto che questo restituisca solo una 500 e mi sarei reso conto del problema in soli 10 secondi - tuttavia la configurazione errata di CORS significava che una 500 non veniva mai effettivamente restituita perché il middleware CORS non era riuscito per primo. Questo è stato immensamente frustrante a dir poco assoluto! . Tuttavia, voglio aggiungere che qui, nel caso in cui altri si trovino in questa situazione, poiché "inseguivo il coniglio sbagliato", se vuoi. Dopo aver corretto la configurazione CORS, mi sono reso conto che il problema reale non era completamente correlato a CORS.
TL; DR; - A volte gli errori lato server "non CORS" .NET possono essere restituiti come errori CORS se i criteri CORS non sono impostati correttamente
Riferimenti:
https://medium.com/swlh/cors-headers-with-dot-net-core-3-5c9dfc664785
app.UseCors("foo");
primaapp.UseHttpsRedirection();