Saya mencoba untuk mengaktifkan berbagi sumber daya lintas asal di ASP.NET Core Web API saya, tetapi saya buntu.
The EnableCors
atribut menerima policyName
tipe string
sebagai parameter:
// Summary:
// Creates a new instance of the Microsoft.AspNetCore.Cors.Core.EnableCorsAttribute.
//
// Parameters:
// policyName:
// The name of the policy to be applied.
public EnableCorsAttribute(string policyName);
Apa policyName
maksudnya dan bagaimana saya bisa mengkonfigurasi CORS pada ASP.NET Core Web API?
c#
asp.net-core
Oluwafemi
sumber
sumber
Jawaban:
Anda harus mengonfigurasi kebijakan CORS saat startup aplikasi dalam
ConfigureServices
metode:The
CorsPolicyBuilder
dalambuilder
memungkinkan Anda untuk mengkonfigurasi kebijakan dengan kebutuhan Anda. Anda sekarang dapat menggunakan nama ini untuk menerapkan kebijakan ke pengontrol dan tindakan:Atau menerapkannya pada setiap permintaan:
sumber
UseCors
metode ekstensi. Perhatikan bahwa middleware CORS harus mendahului titik akhir yang ditentukan dalam aplikasi Anda yang ingin Anda dukung permintaan lintas-asal (mis. sebelum ada panggilan keUseMvc
). "Berlaku untuk .NET Core 1 dan .Net Core 2 (lebih jauh ke bawah)
Jika menggunakan
.Net-Core 1.1
Sayangnya dokumen sangat membingungkan dalam kasus khusus ini. Jadi saya akan membuatnya sangat sederhana:
Microsoft.AspNetCore.Cors
paket nuget ke proyek AndaConfigureServices
metode, tambahkanservices.AddCors();
Dalam
Configure
metode, sebelum memanggilapp.UseMvc()
danapp.UseStaticFiles()
, tambahkan:Itu dia. Setiap klien memiliki akses ke ASP.NET Core Website / API Anda.
Jika menggunakan
.Net-Core 2.0
Microsoft.AspNetCore.Cors
paket nuget ke proyek Andadalam
ConfigureServices
metode, sebelum memanggilservices.AddMvc()
, tambahkan:(Penting) Dalam
Configure
metode, sebelum memanggilapp.UseMvc()
, tambahkanapp.UseCors("AllowAll");
AllowAll
adalah nama kebijakan yang perlu kami sebutkan di app.UserCors. Bisa nama apa saja.sumber
.UseCors()
sebelumnya.UseMvc()
Berdasarkan jawaban Henk, saya dapat menemukan domain spesifik, metode yang ingin saya izinkan, dan juga header yang ingin saya aktifkan CORS untuk:
pemakaian:
sumber
To critique or request clarification from an author
Saya tidak berpikir itu yang terjadi di sini dan jawaban Henk sudah ditandai. Jawaban saya adalah add-on jika Anda ingin mengizinkan domain tertentu.ConfigureCors
diubah menjadiAddCors
.Khususnya di dotnet core 2.2 dengan SignalR Anda harus berubah
.WithOrigins("http://localhost:3000")
atau.SetIsOriginAllowed(isOriginAllowed: _ => true) //for all origins
alih
.AllowAnyOrigin()
- alih dengan.AllowCredentials()
https://trailheadtechnology.com/breaking-change-in-aspnetcore-2-2-for-signalr-and-cors/
https://github.com/aspnet/AspNetCore/issues/4483
sumber
Jika Anda hosting di IIS, salah satu alasan yang mungkin adalah Anda mendapatkan ini karena IIS memblokir
OPTIONS
kata kerja. Saya menghabiskan hampir satu jam karena ini:Salah satu indikasi adalah Anda mendapatkan
404
kesalahan selamaOPTIONS
permintaan.Untuk memperbaikinya, Anda harus secara eksplisit memberi tahu IIS untuk tidak memblokir
OPTIONS
permintaan.Pergi ke Pemfilteran Permintaan:
Pastikan OPSI diizinkan:
Atau, buat saja
web.config
dengan pengaturan berikut:sumber
sumber
`
`
sumber
Dapatkan ini berfungsi dengan .Net Core 3.1 sebagai berikut
1. Pastikan Anda menempatkan kode UseCors di antara app.UseRouting (); dan app.UseAuthentication ();
2.Lalu letakkan kode ini dalam metode ConfigureServices
3. Dan di atas pengontrol dasar saya menempatkan ini
Sekarang semua pengendali saya akan mewarisi dari BaseController dan CORS akan diaktifkan
sumber
place the UseCors code between app.UseRouting(); and app.UseAuthentication();
Langkah 1: Kami membutuhkan paket Microsoft.AspNetCore.Cors dalam proyek kami. Untuk menginstal masuk ke Tools -> NuGet Package Manager -> Kelola Paket NuGet untuk Solusi. Cari Microsoft.AspNetCore.Cors dan instal paket.
Langkah 2: Kita perlu menyuntikkan CORS ke dalam wadah sehingga dapat digunakan oleh aplikasi. Di kelas Startup.cs, mari kita pergi ke metode ConfigureServices dan mendaftar CORS.
Jadi, di aplikasi server kami, mari pergi ke Pengontrol -> HomeController.cs dan tambahkan dekorator EnableCors ke metode Indeks (Atau pengontrol dan tindakan spesifik Anda):
Untuk Lebih Detail, Klik Di Sini
sumber
Semua solusi yang disebutkan di atas dapat bekerja atau mungkin tidak berhasil, dalam banyak kasus itu tidak akan berhasil. Saya sudah memberikan solusinya di sini
Saat ini saya sedang mengerjakan Angular dan Web API (.net Core) dan menemukan masalah CORS yang dijelaskan di bawah ini
Solusi yang diberikan di atas akan selalu berhasil. Dengan permintaan 'OPSI' itu benar-benar perlu untuk mengaktifkan 'Otentikasi Anonim'. Dengan solusi yang disebutkan di sini, Anda tidak harus melakukan semua langkah yang disebutkan di atas, seperti pengaturan IIS.
Anyways seseorang menandai posting saya di atas sebagai duplikat dengan posting ini, tetapi saya dapat melihat bahwa posting ini hanya untuk mengaktifkan CORS di ASP.net Core, tetapi posting saya terkait dengan, Mengaktifkan dan menerapkan CORS di ASP.net Core dan Angular.
sumber