Ohjelmointi

Kuinka CORS otetaan käyttöön Web-sovellusliittymässä

Selaimesi suojauskäytännön suojausrajoitukset estävät verkkoselaimesi tekemästä AJAX-pyyntöjä toisen verkkotunnuksen palvelimelle. Tätä kutsutaan myös saman alkuperän politiikaksi. Toisin sanoen sisäänrakennettu selaimen suojaus estää yhden toimialueen verkkosivua suorittamasta AJAX-puheluja toisella toimialueella.

Tässä CORS (Cross-Origin Resource Sharing) tulee auttamaan. CORS on W3C-standardi, jonka avulla voit päästä eroon selainten hyväksymästä samasta alkuperäkäytännöstä rajoittaa pääsy yhdestä verkkotunnuksesta toiseen verkkotunnukseen kuuluviin resursseihin. Voit ottaa CORS: n käyttöön Web-sovellusliittymälle käyttämällä vastaavaa Web-sovellusliittymäpakettia (käytetyn Web-sovellusliittymän version mukaan) tai OWIN-väliohjelmistoa.

Huomaa, että pyynnön alkuperä koostuu järjestelmästä, isännästä ja portin numerosta. Kahden pyynnön katsotaan siis olevan samaa alkuperää, jos niillä on sama järjestelmä, isäntä ja portin numero. Jos jokin näistä eroaa, pyyntöjen katsotaan olevan ristilähtöisiä, ts. Eivät kuulu identtisiin alkuperäihin.

Ota CORS-tuki käyttöön ASP.NET Web API: ssa

ASP.NET Web API tarjoaa erinomaisen tuen CORS: lle. ASP.NET Web API 2: n CORS-tuen tarjoamiseksi sinun on käytettävä Microsoft.AspNet.WebApi.Cors NuGet -pakettia. Voit asentaa tämän paketin suorittamalla seuraavan komennon NuGet-paketinhallintakonsolista.

Asennuspaketti Microsoft.AspNet.WebApi.Cors

Vaihtoehtoisesti voit valita projektisi Solution Explorer -ikkunasta ja asentaa paketin NuGet-paketinhallinnan kautta.

Jos käytät Web-sovellusliittymää 1.0, voit ottaa CORS-tuen käyttöön, mukaan lukien seuraavat lauseet Global.asax.cs-tiedoston Application_BeginRequest-tapahtumakäsittelijään.

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

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

Huomaa, että ”allowOrigin” tässä on merkkijonomuuttuja, joka sisältää resurssin käyttöä pyytävän pyynnön alkuperän.

CORS-tuki voidaan ottaa käyttöön kolmella tasolla. Näitä ovat seuraavat:

  • Toimintataso
  • Ohjaimen taso
  • Globaali taso

Ota CORS käyttöön globaalilla tasolla

Jos haluat ottaa CORS: n käyttöön globaalilla tasolla, sinun on hyödynnettävä HttpConfiguration-luokan EnableCors-menetelmää alla olevan koodinpätkän mukaisesti.

public static void Register (HttpConfiguration config)

        {

merkkijono alkuperä = "// paikallinen isäntä: 50164 / WebClient /";

EnableCorsAttribute cors = uusi EnableCorsAttribute (alkuperä, "*", "GET, POST");

config.EnableCors (cors);

// Määritä Web-sovellusliittymän kokoonpano ja palvelut täällä

// Määritä Web-sovellusliittymän reitit täältä

        }

    }

Katso yllä annettu koodinpätkä. Huomaa, miten pyynnön alkuperä on määritetty. * -Parametri tarkoittaa kaikkia pyynnön otsikoita. Joten määritetyn verkkotunnuksen GET- ja POST-pyynnöt hyväksytään, kaikki muut pyynnöt hylätään.

Ota CORS käyttöön ohjaimen tasolla

Voit myös ottaa CORS-tuen käyttöön ohjaimen tasolla. Voit tehdä tämän määrittämällä [EnableCors] -määritteen Web-API-ohjaimelle alla olevan kuvan mukaisesti.

  [EnableCors (origins: "// localhost: 50164 /", otsikot: "*", metodit: "*")]

public class AuthorsController: ApiController

    {  

// Kirjoita Web API -ohjaimen menetelmät tähän

    }

Ota CORS käyttöön toimintotasolla

Vastaavasti voit ottaa CORS-toiminnot käyttöön myös toimintatasolla käyttämällä [EnableCORS] -attribuuttia. Tässä on esimerkki, joka kuvaa tämän tekemistä.

public class AuthorsController: ApiController

    {

[EnableCors (origins: "// localhost: 50164 /", otsikot: "*", metodit: "*")]

public IEnumerable Get ()

        {

palauta uusi merkkijono [] {"Joydip Kanjilal", "Steve Smith"};

        }

    }

Poista CORS käytöstä tietylle toiminnolle

Nyt sinun on ehkä poistettava CORS käytöstä tietylle toiminnolle tai toimintaryhmälle. Tämä ominaisuus voi olla kätevä, kun olet jo ottanut CORS: n käyttöön globaalilla tasolla ja haluat nyt poistaa sen käytöstä yhdestä useammasta toiminnasta turvallisuussyistä. Seuraava koodinpätkä kuvaa, kuinka voit saavuttaa tämän käyttämällä [DisableCors] -attribuuttia.

[DisableCors ()]

public IEnumerable Get ()

   {

palauta uusi merkkijono [] {"Joydip Kanjilal", "Steve Smith"};

   }

Jos käytät ASP.NET Core -ohjelmaa, sinun on lisättävä projektiin NuGetin kautta Microsoft.AspNetCore.Cors-paketti ja kirjoittava seuraava lause Startup.cs-tiedostoon CORS-tuen määrittämiseksi.

public void ConfigureServices (IServiceCollection-palvelut)

{

palvelut.AddCors ();

}

Voit ottaa CORS: n käyttöön käyttämällä CORS-väliohjelmistoa - voit hyödyntää UseCors-laajennusmenetelmää tältä osin. Vaihtoehtoisesti voit ottaa CORS: n käyttöön ohjaimessa tai toimintotasoilla käyttämällä EnableCors-määritettä samalla tavalla kuin aiemmin tässä artikkelissa. Vastaavasti CORS: n poistamiseksi käytöstä voit käyttää [DisableCors] -attribuuttia.