Saya tidak yakin apa yang saya lewatkan, tetapi sepertinya tidak bisa mendapatkan Kebijakan CORS saya bekerja dengan .NET Core 3.1 dan sisi klien 8 Sudut.
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();
});
}
Pesan Kesalahan Sisi Klien:
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.
MEMPERBARUI:
Meskipun saya telah mengkonfigurasi CORS tidak benar (dan jawaban yang diterima di bawah itu sebenarnya bantuan dengan itu) akar masalah adalah tidak berhubungan. Untuk konteks tambahan, aplikasi berfungsi dengan baik saat menjalankan API dan aplikasi Angular menggunakan CLI - Saya hanya mengalami masalah ini setelah menempatkan keduanya ke server web.
Masalah "sebenarnya" pada akhirnya terkait dengan koneksi SQL, yang saya temukan setelah menambahkan kesalahan flat-file logging ke API dan menjalankan jejak SQL Server untuk menemukan bahwa aplikasi tidak dapat terhubung ke SQL sama sekali.
Saya biasanya berharap ini hanya mengembalikan 500 dan saya akan menyadari masalah ini dalam hitungan 10 detik - namun kesalahan konfigurasi CORS berarti 500 tidak pernah benar-benar dikembalikan karena middleware CORS gagal terlebih dahulu. Ini sangat frustasi untuk mengatakan yang paling tidak absolut! . Namun saya ingin menambahkan bahwa di sini kalau-kalau orang lain menemukan diri mereka dalam situasi ini, karena saya "mengejar kelinci yang salah," jika Anda mau. Setelah memperbaiki konfigurasi CORS, saya menyadari bahwa masalah sebenarnya sama sekali tidak terkait dengan CORS.
TL; DR; - Kadang-kadang "Non-CORS" .NET Server-side Error Dapat Dikembalikan sebagai Kesalahan CORS Jika kebijakan CORS Tidak Diatur dengan Benar
Referensi:
https://medium.com/swlh/cors-headers-with-dot-net-core-3-5c9dfc664785
app.UseCors("foo");
sebelumnyaapp.UseHttpsRedirection();
Jawaban:
pertama kalau
app.UseRouting();
begituapp.UseCors("foo");
Ubah
Configure
metode Anda seperti berikut ini:Itu berhasil untuk saya!
sumber
ConfigureServices
kode OP memecahkan masalah saya. Terima kasih banyak!API Web menggunakan
app.UseHttpsRedirection()
; yang menyebabkanCORS
masalah jika meminta klien tidakhttps
didasarkan. Jadi untuk menggunakannya denganhttp
klien kita perlu berkomentar atau menghapus baris itu.Masalah ini bukan dengan
CORS
, https menyebabkan masalah ini tetapi kesalahan yang dilemparkan mengatakan ini dengan CORS.sumber
Coba util ini
https://www.nuget.org/packages/Microsoft.AspNetCore.Cors/ Dengan ini Anda dapat mengaktifkan / menonaktifkan cors di aplikasi inti .net Anda
sumber
Ketika Anda menggunakan localhost sebagai
http://localhost:4200
, maka cobalah untuk mengaturnya di konfigurasi Anda:Dan
Configure
metode:sumber
Saat menambahkan Layanan Cors, pastikan untuk memasukkan
.SetIsOriginAllowed((host) => true)
setelah.WithOrigins("http://localhost:4200")
sumber