A webes api projektek között a domainek közötti kérések elérhetőségének kezelése
Beleértve a CORS-t a web.config-ban
Most, hogy a probléma világos, töröljük a hibát. A legegyszerűbb mód a "Access-Control-Allow-Origin" fejléc felvételéhez a web.config programban. Nyissa meg a webes API-projekt web.config-jét, és adja hozzá a következő jelölést a szakaszhoz
Itt a szakaszban
Támogatja a CORS specifikációt az ASP.NET Web API-ban
Ezután telepítheti a Microsoft ASP.NET Web API Cross Origin támogatását.
A csomag telepítése két olyan kapcsolatot hoz létre, amelyek felelősek a CORS támogatásáért:
A CORS támogatás alkalmazása
A Web API telepítése után a CORS támogatást követően alkalmazzuk. Ne felejtsük el eltávolítani a "Access-Control-Allow-Origin" fejlécet a web.config-ból, ha létezik. Nyissa meg a WebApiConfig.cs fájlt a Web API projektben, és adja hozzá a következő sort a Regisztrációs módszerhez:
Ez lehetővé teszi a CORS támogatását a webes API-projektben. De eddig egyetlen vezérlő sem támogatja a CORS-et. Ehhez meg kell nyitnia a ValuesController-t, és hozzá kell adnia az [EnableCors] attribútumot:
Az [EnableCors] attribútum három paramétert fogad el: domének, fejlécek és módszerek (eredet, fejlécek és módszerek). Az "*" értékek azt jelentik, hogy minden domain, fejléc és módszer rendelkezésre áll. A vezérlő attribútum lehetővé teszi, hogy hívja az összes vezérlő módszert. Ha csak néhány módszert kíván használni, akkor az attribútum eltávolítható a vezérlőből és elhelyezhető a szükséges módszerekkel.
Ez azt jelenti, hogy a Get módszer más domainek számára elérhető, és nincsenek más módszerek. Ha ki szeretné zárni a módszereket, akkor használja a [DisableCors] attribútumot:
Ebben az esetben a Get kivételével minden módszer elérhető lesz.
Tehát a CORS specifikáció lehetővé teszi az interdomain AJAX kéréseket. A CORS támogatás a webes API-projektekben a System.Web.Cors és a System.Web.Http.Cors rendszerekben valósul meg. A rendelkezésre állás elérése érdekében az [EnableCors] és a [DisableCors] attribútumokat használjuk.