Neyi kaçırdığımdan emin değilim, ancak CORS Politikamın .NET Core 3.1 ve Angular 8 istemci tarafı ile çalışmasını sağlayamıyorum.
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();
});
}
Hata Mesajı İstemci tarafı:
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.
GÜNCELLEME:
Her ne kadar CORS'u yanlış yapılandırmış olsam da (ve aşağıdaki kabul edilen cevap aslında bu konuda yardımcı oldu) sorunun kökü ilgisizdi. Ek bağlam için, API ve Angular uygulamasını CLI kullanarak çalıştırırken uygulama tamamen iyi çalışıyordu - Bu sorunu yalnızca her ikisini de bir web sunucusuna dağıttıktan sonra yaşıyordum.
"Gerçek" sorunu sadece API düz dosya hata günlüğü eklenmesi ve uygulama hiç SQL bağlanmak mümkün değildi bulmak için bir SQL Server iz çalıştırdıktan sonra keşfedilen SQL bağlantısı ile ilgili olan sona erdi.
Normalde bunun sadece 500 dönmesini beklerdim ve sorunu 10 saniye içinde fark ederdim - ancak CORS yanlış yapılandırması, 500'ün asla geri döndürülmediği anlamına geliyordu çünkü CORS ara katmanı ilk önce başarısız oldu. Bu mutlak az söylemek son derece sinir bozucu oldu! . Ancak bunu, başkalarının kendilerini bu durumda bulmaları durumunda, "yanlış tavşanı kovaladığım" şeklinde eklemek istiyorum. CORS yapılandırmasını düzelttikten sonra, asıl sorunun CORS ile tamamen ilgisiz olduğunu fark ettim.
TL; DR; - Bazen "CORS olmayan" .NET Server tarafı hataları, CORS ilkeleri doğru şekilde ayarlanmazsa CORS hataları olarak döndürülebilir
Referanslar:
https://medium.com/swlh/cors-headers-with-dot-net-core-3-5c9dfc664785
app.UseCors("foo");önce ayarlamaya çalışınapp.UseHttpsRedirection();