Programmering

Hvordan aktivere CORS på web-API-et

Sikkerhetsbegrensninger for nettleserens sikkerhetspolicy hindrer nettleseren din i å komme med AJAX-forespørsler til en server i et annet domene. Dette er også kjent som policy med samme opprinnelse. Med andre ord forhindrer innebygd nettlesersikkerhet at en webside fra ett domene utfører AJAX-anrop på et annet domene.

Her kommer CORS (Cross-Origin Resource Sharing) til unnsetning. CORS er en W3C-standard som lar deg komme vekk fra den samme opprinnelsespolitikken som ble vedtatt av nettleserne for å begrense tilgangen fra ett domene til ressurser som tilhører et annet domene. Du kan aktivere CORS for Web API ved hjelp av den respektive Web API-pakken (avhengig av versjonen av Web API som er i bruk) eller OWIN-mellomvare.

Merk at opprinnelsen til en forespørsel består av et skjema, en vert og et portnummer. Så to forespørsler anses å være av samme opprinnelse hvis de har samme ordning, vert og portnummer. Hvis noen av disse er forskjellige, anses forespørslene å være kryssopprinnelse, dvs. ikke tilhøre identisk opprinnelse.

Aktiver CORS-støtte i ASP.NET Web API

ASP.NET Web API gir utmerket støtte for CORS. For å gi støtte for CORS i ASP.NET Web API 2, må du bruke Microsoft.AspNet.WebApi.Cors NuGet-pakken. For å installere denne pakken, kan du utføre følgende kommando fra NuGet pakkebehandlerkonsoll.

Install-pakke Microsoft.AspNet.WebApi.Cors

Alternativt kan du velge prosjektet i Solution Explorer-vinduet og installere pakken via NuGet pakkebehandling.

Hvis du bruker Web API 1.0, kan du aktivere CORS-støtte, inkludert følgende utsagn i Application_BeginRequest-hendelsesbehandleren i filen Global.asax.cs.

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

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

Vær oppmerksom på at "allowOrigin" her er en strengvariabel som inneholder opprinnelsen til forespørselen som ønsker tilgang til ressursen.

Støtte for CORS kan aktiveres på tre nivåer. Disse inkluderer følgende:

  • Handlingsnivå
  • Kontrollernivå
  • Globalt nivå

Aktiver CORS på globalt nivå

For å aktivere CORS på globalt nivå, må du dra nytte av EnableCors-metoden i HttpConfiguration-klassen som vist i kodebiten gitt nedenfor.

public static void Register (HttpConfiguration config)

        {

streng opprinnelse = "// localhost: 50164 / WebClient /";

EnableCorsAttribute cors = new EnableCorsAttribute (origin, "*", "GET, POST");

config.EnableCors (cors);

// Spesifiser Web API-konfigurasjonen og tjenestene her

// Spesifiser Web API-rutene her

        }

    }

Se kodebiten gitt ovenfor. Legg merke til hvordan forespørselens opprinnelse er spesifisert. Parameteren * innebærer alle forespørselsoverskrifter. Så, GET- og POST-forespørsler fra det angitte domenet vil bli akseptert, alle andre forespørsler vil bli avvist.

Aktiver CORS på kontrollernivå

Du kan også aktivere CORS-støtte på kontrollernivå. For å gjøre dette, spesifiser [EnableCors] -attributtet til Web API-kontrolleren din som vist nedenfor.

  [EnableCors (opprinnelse: "// localhost: 50164 /", overskrifter: "*", metoder: "*")]

offentlig klasse AuthorsController: ApiController

    {  

// Skriv dine Web API-kontrollermetoder her

    }

Aktiver CORS på Handlingsnivå

På samme måte kan du også aktivere CORS på handlingsnivå ved hjelp av [EnableCORS] -attributtet. Her er et eksempel som illustrerer hvordan dette gjøres.

offentlig klasse AuthorsController: ApiController

    {

[EnableCors (opprinnelse: "// localhost: 50164 /", overskrifter: "*", metoder: "*")]

offentlig IEnumerable Get ()

        {

returner ny streng [] {"Joydip Kanjilal", "Steve Smith"};

        }

    }

Deaktiver CORS for en bestemt handling

Nå må du kanskje deaktivere CORS for en bestemt handling eller en gruppe handlinger. Denne funksjonen kan være nyttig når du allerede har aktivert CORS på globalt nivå, og du nå vil deaktivere den av en eller flere handlinger på grunn av sikkerhetsgrunner. Følgende kodebit illustrerer hvordan du kan oppnå dette ved hjelp av [DisableCors] -attributtet.

[DisableCors ()]

offentlig IEnumerable Get ()

   {

returner ny streng [] {"Joydip Kanjilal", "Steve Smith"};

   }

Hvis du bruker ASP.NET Core, bør du legge til Microsoft.AspNetCore.Cors-pakken via NuGet til prosjektet ditt og deretter skrive følgende uttalelse i Startup.cs-filen for å konfigurere CORS-støtte.

offentlig ugyldighet ConfigureServices (IServiceCollection-tjenester)

{

tjenester.AddCors ();

}

Du kan aktivere CORS ved hjelp av CORS mellomvare - du kan dra nytte av UseCors-utvidelsesmetoden i denne forbindelse. Alternativt kan du aktivere CORS på kontrolleren eller handlingsnivåene ved hjelp av EnableCors-attributtet på samme måte som vi gjorde tidligere i denne artikkelen. På samme måte kan du deaktivere CORS ved å bruke [DisableCors] -attributtet.

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