Programmering

Sådan aktiveres CORS på din web-API

Sikkerhedsrestriktioner for din browsers sikkerhedspolitik forhindrer din webbrowser i at stille AJAX-anmodninger til en server i et andet domæne. Dette er også kendt som samme oprindelsespolitik. Med andre ord forhindrer den indbyggede browsersikkerhed en webside i et domæne i at udføre AJAX-opkald på et andet domæne.

Her er hvor CORS (Cross-Origin Resource Sharing) kommer til undsætning. CORS er en W3C-standard, der giver dig mulighed for at komme væk fra den samme oprindelsespolitik, der er vedtaget af browserne for at begrænse adgangen fra et domæne til ressourcer, der tilhører et andet domæne. Du kan aktivere CORS til din Web API ved hjælp af den respektive Web API-pakke (afhængigt af den version af Web API, der er i brug) eller OWIN-middleware.

Bemærk, at oprindelsen til en anmodning består af et skema, en vært og et portnummer. Så to anmodninger anses for at være af samme oprindelse, hvis de har samme skema, vært og portnummer. Hvis nogen af ​​disse adskiller sig, betragtes anmodningerne som krydsoprindelse, dvs. ikke tilhørende identisk oprindelse.

Aktivér CORS-understøttelse i ASP.NET Web API

ASP.NET Web API giver fremragende support til CORS. For at yde support til CORS i ASP.NET Web API 2 skal du bruge Microsoft.AspNet.WebApi.Cors NuGet-pakken. For at installere denne pakke kan du udføre følgende kommando fra NuGet pakkehåndteringskonsol.

Installationspakke Microsoft.AspNet.WebApi.Cors

Alternativt kan du vælge dit projekt i vinduet Solution Explorer og installere pakken via NuGet pakkehåndtering.

Hvis du bruger Web API 1.0, kan du aktivere CORS-support inklusive følgende udsagn i Application_BeginRequest-begivenhedshåndteringen af ​​filen Global.asax.cs.

HttpContext.Current.Response.AddHeader ("Adgangskontrol-Tillad oprindelse", allowOrigin);

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

Bemærk, at "allowOrigin" her er en strengvariabel, der indeholder oprindelsen til den anmodning, der ønsker at få adgang til ressourcen.

Support til CORS kan aktiveres på tre niveauer. Disse inkluderer følgende:

  • Handlingsniveau
  • Controller niveau
  • Globalt niveau

Aktivér CORS på globalt niveau

For at aktivere CORS på globalt niveau skal du drage fordel af EnableCors-metoden i HttpConfiguration-klassen som vist i nedenstående kodestykke.

offentligt statisk ugyldigt register (HttpConfiguration config)

        {

string origin = "// localhost: 50164 / WebClient /";

EnableCorsAttribute cors = ny EnableCorsAttribute (oprindelse, "*", "GET, POST");

config.EnableCors (kors);

// Specificer Web API-konfiguration og tjenester her

// Angiv Web API-ruter her

        }

    }

Se kodeuddraget ovenfor. Bemærk, hvordan anmodningens oprindelse er specificeret. Parameteren * indebærer alle anmodningsoverskrifter. Så GET- og POST-anmodninger fra det angivne domæne accepteres, alle andre anmodninger afvises.

Aktivér CORS på controller-niveau

Du kan også aktivere CORS-support på controllerniveau. For at gøre dette skal du specificere [EnableCors] -attributten til din Web API-controller som vist nedenfor.

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

offentlig klasse AuthorsController: ApiController

    {  

// Skriv dine Web API-controller-metoder her

    }

Aktivér CORS på handlingsniveau

På samme måde kan du også aktivere CORS på handlingsniveau ved hjælp af attributten [EnableCORS]. Her er et eksempel, der illustrerer, hvordan dette gøres.

offentlig klasse AuthorsController: ApiController

    {

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

offentlig IEnumerable Get ()

        {

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

        }

    }

Deaktiver CORS for en bestemt handling

Nu skal du muligvis deaktivere CORS for en bestemt handling eller en gruppe af handlinger. Denne funktion kan være praktisk, når du allerede har aktiveret CORS på globalt niveau, og du nu vil deaktivere den af ​​en af ​​flere handlinger af sikkerhedsmæssige årsager. Følgende kodestykke illustrerer, hvordan du kan opnå dette ved hjælp af attributten [DisableCors].

[DisableCors ()]

offentlig IEnumerable Get ()

   {

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

   }

Hvis du bruger ASP.NET Core, skal du tilføje Microsoft.AspNetCore.Cors-pakken via NuGet til dit projekt og derefter skrive følgende erklæring i filen Startup.cs for at konfigurere CORS-understøttelse.

offentlig ugyldighed ConfigureServices (IServiceCollection-tjenester)

{

services.AddCors ();

}

Du kan aktivere CORS ved hjælp af CORS middleware - du kan drage fordel af UseCors-udvidelsesmetoden i denne henseende. Alternativt kan du aktivere CORS på controlleren eller handlingsniveauerne ved hjælp af EnableCors-attributten på samme måde som vi gjorde tidligere i denne artikel. På samme måde kan du deaktivere CORS ved at bruge attributten [DisableCors].