Programiranje

Kako omogočiti CORS v spletnem API-ju

Varnostne omejitve varnostne politike brskalnika spletnemu brskalniku preprečujejo pošiljanje zahtev AJAX strežniku v drugi domeni. To je znano tudi kot politika istega izvora. Z drugimi besedami, vgrajena zaščita brskalnika na spletni strani ene domene preprečuje izvajanje klicev AJAX na drugi domeni.

Tukaj priskoči na pomoč CORS (Cross-Origin Resource Sharing). CORS je standard W3C, ki vam omogoča, da se izognete isti politiki izvora, ki so jo sprejeli brskalniki, in tako omejijo dostop iz ene domene do virov, ki pripadajo drugi domeni. CORS za svoj spletni API lahko omogočite z ustreznim paketom spletnega API-ja (odvisno od različice uporabljenega spletnega API-ja) ali vmesne programske opreme OWIN.

Izvor zahteve sestavljajo shema, gostitelj in številka vrat. Torej se šteje, da sta dve zahtevi istega izvora, če imata isto shemo, gostitelja in številko vrat. Če se katera od teh razlikuje, se šteje, da so zahteve navzkrižnega izvora, torej da ne pripadajo enakemu izvoru.

Omogočite podporo CORS v spletnem API-ju ASP.NET

Spletni API ASP.NET nudi odlično podporo za CORS. Če želite zagotoviti podporo za CORS v ASP.NET Web API 2, morate uporabiti paket NuGet Microsoft.AspNet.WebApi.Cors. Če želite namestiti ta paket, lahko v konzoli upravitelja paketov NuGet izvedete naslednji ukaz.

Namesti paket Microsoft.AspNet.WebApi.Cors

Lahko pa svoj projekt izberete v oknu raziskovalca rešitev in paket namestite prek upravitelja paketov NuGet.

Če uporabljate spletni API 1.0, lahko omogočite podporo za CORS, vključno z naslednjimi stavki v obdelovalcu dogodkov Application_BeginRequest datoteke Global.asax.cs.

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

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

Upoštevajte, da je »allowedOrigin« tukaj spremenljivka niza, ki vsebuje izvor zahteve, ki želi dostopati do vira.

Podporo za CORS lahko omogočimo na treh ravneh. Sem spadajo naslednje:

  • Raven ukrepanja
  • Raven krmilnika
  • Globalna raven

Omogočite CORS na globalni ravni

Če želite omogočiti CORS na globalni ravni, morate izkoristiti metodo EnableCors razreda HttpConfiguration, kot je prikazano v spodnjem delčku kode.

javni statični void Register (HttpConfiguration config)

        {

izvor izvora = "// localhost: 50164 / WebClient /";

EnableCorsAttribute cors = novo EnableCorsAttribute (izvor, "*", "GET, POST");

config.EnableCors (cors);

// Tukaj določite konfiguracijo in storitve spletnega API-ja

// Tu določite poti spletnega API-ja

        }

    }

Glejte zgornji delček kode. Upoštevajte, kako je bil določen izvor zahteve. Parameter * vključuje vse glave zahtev. Torej, zahteve GET in POST iz določene domene bi bile sprejete, vse druge zahteve bi bile zavrnjene.

Omogočite CORS na ravni krmilnika

Podporo CORS lahko omogočite tudi na ravni krmilnika. Če želite to narediti, podajte atribut [EnableCors] za vaš krmilnik spletnega API-ja, kot je prikazano spodaj.

  [EnableCors (izvor: "// localhost: 50164 /", glave: "*", metode: "*")]

javni razred AuthorsController: ApiController

    {  

// Tukaj napišite metode krmilnika spletnega API-ja

    }

Omogoči CORS na ravni akcije

Podobno lahko CORS omogočite tudi na ravni akcije z uporabo atributa [EnableCORS]. Tu je primer, ki ponazarja, kako se to naredi.

javni razred AuthorsController: ApiController

    {

[EnableCors (izvor: "// localhost: 50164 /", glave: "*", metode: "*")]

javni IEnumerable Get ()

        {

vrni nov niz [] {"Joydip Kanjilal", "Steve Smith"};

        }

    }

Onemogočite CORS za določeno dejanje

Zdaj boste morda morali onemogočiti CORS za določeno dejanje ali skupino dejanj. Ta funkcija je morda priročna, če ste CORS že omogočili na globalni ravni in jo želite zaradi varnostnih razlogov onemogočiti zaradi enega od več dejanj. Naslednji delček kode prikazuje, kako lahko to dosežete z atributom [DisableCors].

[DisableCors ()]

javni IEnumerable Get ()

   {

vrni nov niz [] {"Joydip Kanjilal", "Steve Smith"};

   }

Če uporabljate ASP.NET Core, dodajte projektu Microsoft.AspNetCore.Cors prek programa NuGet in nato v datoteko Startup.cs za nastavitev podpore za CORS zapišite naslednjo izjavo.

public void ConfigureServices (storitve IServiceCollection)

{

services.AddCors ();

}

CORS lahko omogočite s pomočjo vmesne programske opreme CORS - v zvezi s tem lahko izkoristite razširitveno metodo UseCors. Lahko pa omogočite CORS na nivoju krmilnika ali dejanja z uporabo atributa EnableCors, podobno kot smo to storili prej v tem članku. Podobno lahko za onemogočanje CORS uporabite atribut [DisableCors].

$config[zx-auto] not found$config[zx-overlay] not found