Programovanie

Ako povoliť CORS vo vašom webovom rozhraní API

Bezpečnostné obmedzenia týkajúce sa bezpečnostných politík vášho prehliadača bránia vášmu webovému prehliadaču odosielať požiadavky AJAX na server v inej doméne. Toto sa tiež nazýva politika rovnakého pôvodu. Inými slovami, zabudované zabezpečenie prehľadávača bráni webovej stránke jednej domény v uskutočňovaní hovorov AJAX na inej doméne.

Tu prichádza na pomoc CORS (Cross-Origin Resource Sharing). CORS je štandard W3C, ktorý vám umožní vyhnúť sa rovnakým zásadám pôvodu prijatým prehliadačmi, aby ste obmedzili prístup z jednej domény na zdroje patriace inej doméne. CORS pre svoje webové API môžete povoliť pomocou príslušného balíka webového rozhrania API (v závislosti od používanej verzie webového rozhrania API) alebo middlewaru OWIN.

Pamätajte, že pôvod žiadosti pozostáva zo schémy, hostiteľa a čísla portu. Dve žiadosti sa teda považujú za žiadosti od rovnakého pôvodu, ak majú rovnakú schému, hostiteľa a číslo portu. Ak sa niektorý z nich líši, žiadosti sa považujú za krížový pôvod, t. J. Nepatria k identickému pôvodu.

Povoliť podporu CORS vo webovom rozhraní API ASP.NET

ASP.NET Web API poskytuje vynikajúcu podporu pre CORS. Ak chcete poskytnúť podporu pre CORS v rozhraní ASP.NET Web API 2, musíte použiť balíček Microsoft.AspNet.WebApi.Cors NuGet. Ak chcete nainštalovať tento balík, môžete z konzoly správcu balíkov NuGet vykonať nasledujúci príkaz.

Inštalačný balík Microsoft.AspNet.WebApi.Cors

Prípadne môžete svoj projekt vybrať v okne Solution Explorer a nainštalovať balík prostredníctvom správcu balíkov NuGet.

Ak používate webové rozhranie API 1.0, môžete povoliť podporu CORS vrátane nasledujúcich príkazov v obslužnej rutine udalosti Application_BeginRequest súboru Global.asax.cs.

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

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

Upozorňujeme, že parameter „enabledOrigin“ je premenná reťazca, ktorá obsahuje pôvod požiadavky, ktorá chce získať prístup k prostriedku.

Podporu pre CORS je možné povoliť na troch úrovniach. Medzi ne patria:

  • Akčná úroveň
  • Úroveň ovládača
  • Globálna úroveň

Povoliť CORS na globálnej úrovni

Ak chcete povoliť CORS na globálnej úrovni, budete musieť využiť metódu EnableCors triedy HttpConfiguration, ako je uvedené v útržku kódu uvedenom nižšie.

verejný statický neplatný register (konfigurácia HttpConfiguration)

        {

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

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

config.EnableCors (cors);

// Tu zadajte konfiguráciu a služby webového API

// Tu zadajte trasy webového API

        }

    }

Prečítajte si útržok kódu uvedený vyššie. Všimnite si, ako bol špecifikovaný pôvod žiadosti. Parameter * implikuje všetky hlavičky požiadaviek. Takže žiadosti GET a POST zo zadanej domény budú akceptované, všetky ostatné žiadosti budú zamietnuté.

Povoliť CORS na úrovni radiča

Môžete tiež povoliť podporu CORS na úrovni radiča. Za týmto účelom zadajte atribút [EnableCors] pre váš radič webového API, ako je uvedené nižšie.

  [EnableCors (pôvody: "// localhost: 50164 /", hlavičky: "*", metódy: "*")]

verejná trieda AuthorsController: ApiController

    {  

// Sem napíšte svoje metódy radiča webového API

    }

Povoľte CORS na úrovni akcie

Podobne môžete tiež povoliť CORS na úrovni akcie pomocou atribútu [EnableCORS]. Tu je príklad, ktorý ilustruje, ako sa to deje.

verejná trieda AuthorsController: ApiController

    {

[EnableCors (pôvody: "// localhost: 50164 /", hlavičky: "*", metódy: "*")]

verejné IEnumerable Get ()

        {

vrátiť nový reťazec [] {"Joydip Kanjilal", "Steve Smith"};

        }

    }

Zakážte CORS pre konkrétnu akciu

Možno budete musieť vypnúť CORS pre konkrétnu akciu alebo skupinu akcií. Táto funkcia by mohla byť užitočná, keď ste už povolili CORS na globálnej úrovni a teraz ho chcete z bezpečnostných dôvodov deaktivovať pre jednu alebo viac akcií. Nasledujúci úryvok kódu ilustruje, ako to môžete dosiahnuť pomocou atribútu [DisableCors].

[DisableCors ()]

verejné IEnumerable Get ()

   {

vrátiť nový reťazec [] {"Joydip Kanjilal", "Steve Smith"};

   }

Ak používate ASP.NET Core, mali by ste do svojho projektu pridať balík Microsoft.AspNetCore.Cors cez NuGet a potom napísať nasledujúce vyhlásenie do súboru Startup.cs, aby ste nastavili podporu CORS.

public void ConfigureServices (služby IServiceCollection)

{

služby.AddCors ();

}

CORS môžete povoliť pomocou middlewaru CORS - v tomto ohľade môžete využiť metódu rozšírenia UseCors. Prípadne môžete CORS povoliť na úrovni radiča alebo akcie pomocou atribútu EnableCors rovnakým spôsobom, ako sme to urobili predtým v tomto článku. Podobne môžete na deaktiváciu CORS použiť atribút [DisableCors].

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