Programavimas

Kaip įgalinti CORS savo žiniatinklio API

Jūsų naršyklės saugos politikos saugos apribojimai neleidžia jūsų žiniatinklio naršyklei teikti AJAX užklausų serveriui kitame domene. Tai taip pat žinoma kaip tos pačios kilmės politika. Kitaip tariant, integruota naršyklės sauga neleidžia vieno domeno tinklalapiui vykdyti AJAX skambučių kitame domene.

Čia gelbsti CORS (Cross-Origin Resource Sharing). CORS yra W3C standartas, leidžiantis atsisakyti tos pačios naršyklių patvirtintos kilmės politikos, kad apribotumėte vieno domeno prieigą prie kitam domenui priklausančių išteklių. CORS galite įjungti savo žiniatinklio API naudodami atitinkamą žiniatinklio API paketą (atsižvelgiant į naudojamą žiniatinklio API versiją) arba OWIN tarpinę programinę įrangą.

Atminkite, kad užklausos kilmę sudaro schema, pagrindinis kompiuteris ir prievado numeris. Taigi, dvi užklausos laikomos tos pačios kilmės, jei jos turi tą pačią schemą, pagrindinį kompiuterį ir prievado numerį. Jei kuri nors iš jų skiriasi, prašymai laikomi kryžminiais, t. Y. Nepriklausančiais vienodoms kilmėms.

Įgalinti CORS palaikymą ASP.NET žiniatinklio API

ASP.NET žiniatinklio API puikiai palaiko CORS. Norėdami palaikyti CORS ASP.NET Web API 2, turite naudoti „Microsoft.AspNet.WebApi.Cors NuGet“ paketą. Norėdami įdiegti šį paketą, galite atlikti šią komandą iš „NuGet“ paketų tvarkyklės konsolės.

„Microsoft.AspNet.WebApi.Cors“ diegimo paketas

Arba galite pasirinkti savo projektą „Solution Explorer“ lange ir įdiegti paketą per „NuGet“ paketų tvarkyklę.

Jei naudojate „Web API 1.0“, galite įgalinti CORS palaikymą, įskaitant šiuos sakinius, failo „Global.asax.cs“ įvykių tvarkytuvėje „Application_BeginRequest“.

„HttpContext.Current.Response.AddHeader“ („Access-Control-Allow-Origin“, allowedOrigin);

„HttpContext.Current.Response.AddHeader“ („Access-Control-Allow-Methods“, „GET, POST“);

Atminkite, kad „allowOrigin“ čia yra eilutės kintamasis, kuriame yra užklausos, kuri nori pasiekti šaltinį, kilmė.

CORS palaikymą galima įjungti trimis lygiais. Tai apima:

  • Veiksmo lygis
  • Valdiklio lygis
  • Pasauliniu lygiu

Įgalinti CORS pasauliniu lygiu

Norėdami įgalinti CORS pasauliniu lygiu, turėtumėte pasinaudoti „HttpConfiguration“ klasės „EnableCors“ metodu, kaip parodyta toliau pateiktame kodo fragmente.

public static void Register („HttpConfiguration config“)

        {

eilutės kilmė = "// localhost: 50164 / WebClient /";

„EnableCorsAttribute cors“ = naujas „EnableCorsAttribute“ (pradžia, „*“, „GET, POST“);

konfig. „EnableCors“ (korsai);

// Čia nurodykite žiniatinklio API konfigūraciją ir paslaugas

// Čia nurodykite žiniatinklio API maršrutus

        }

    }

Žr. Aukščiau pateiktą kodo fragmentą. Atkreipkite dėmesį, kaip buvo nurodyta užklausos kilmė. * Parametras reiškia visas užklausų antraštes. Taigi, GET ir POST užklausos iš nurodyto domeno bus priimtos, visos kitos užklausos bus atmestos.

Įjungti CORS valdiklio lygiu

Taip pat galite įjungti CORS palaikymą valdiklio lygiu. Norėdami tai padaryti, nurodykite [EnableCors] atributą savo žiniatinklio API valdikliui, kaip parodyta žemiau.

  [„EnableCors“ (ištakos: "// localhost: 50164 /", antraštės: "*", metodai: "*")]

public class AuthorsController: ApiController

    {  

// Čia parašykite savo žiniatinklio API valdiklio metodus

    }

Įgalinti CORS veiksmo lygiu

Taip pat galite įgalinti CORS veiksmo lygiu naudodami atributą [EnableCORS]. Štai pavyzdys, iliustruojantis, kaip tai daroma.

public class AuthorsController: ApiController

    {

[„EnableCors“ (kilmė: "// localhost: 50164 /", antraštės: "*", metodai: "*")]

public IEnumerable Get ()

        {

grąžinti naują eilutę [] {"Joydip Kanjilal", "Steve Smith"};

        }

    }

Išjunkite CORS tam tikram veiksmui

Dabar jums gali tekti išjungti CORS dėl konkretaus veiksmo ar veiksmų grupės. Ši funkcija gali būti patogu, kai jau įgalinote CORS pasauliniu lygiu ir dabar norite ją išjungti dėl vieno iš daugiau veiksmų dėl saugumo. Šis kodo fragmentas parodo, kaip tai galite pasiekti naudodami atributą [DisableCors].

[DisableCors ()]

public IEnumerable Get ()

   {

grąžinti naują eilutę [] {"Joydip Kanjilal", "Steve Smith"};

   }

Jei naudojate ASP.NET Core, turėtumėte pridėti „Microsoft.AspNetCore.Cors“ paketą per „NuGet“ į savo projektą ir tada parašykite šį teiginį faile „Startup.cs“, kad nustatytumėte CORS palaikymą.

public void „ConfigureServices“ („IServiceCollection“ paslaugos)

{

paslaugos.AddCors ();

}

CORS galite įjungti naudodami CORS tarpinę programinę įrangą - šiuo atžvilgiu galite pasinaudoti „UseCors“ plėtinio metodu. Arba galite įgalinti CORS valdiklyje arba veiksmų lygiuose naudodami „EnableCors“ atributą panašiai, kaip tai darėme anksčiau šiame straipsnyje. Panašiai, norėdami išjungti CORS, galite naudoti atributą [DisableCors].