Programmēšana

Kā iespējot CORS savā tīmekļa API

Jūsu pārlūkprogrammas drošības politikas drošības ierobežojumi neļauj jūsu tīmekļa pārlūkprogrammai veikt AJAX pieprasījumus uz cita domēna serveri. To sauc arī par vienas izcelsmes politiku. Citiem vārdiem sakot, iebūvēta pārlūka drošība neļauj viena domēna tīmekļa lapai veikt AJAX zvanus citā domēnā.

Šeit palīdz CORS (Cross-Origin Resource Sharing). CORS ir W3C standarts, kas ļauj atteikties no tās pašas izcelsmes politikas, kuru pieņēmušas pārlūkprogrammas, lai ierobežotu piekļuvi no viena domēna tikai citiem domēniem piederošiem resursiem. CORS varat iespējot savai Web API, izmantojot attiecīgo Web API pakotni (atkarībā no izmantotās Web API versijas) vai OWIN starpprogrammatūru.

Ņemiet vērā, ka pieprasījuma izcelsmi veido shēma, resursdators un porta numurs. Tātad divi pieprasījumi tiek uzskatīti par vienādas izcelsmes, ja tiem ir vienāda shēma, resursdators un porta numurs. Ja kāds no šiem atšķiras, pieprasījumi tiek uzskatīti par savstarpēju izcelsmi, t.i., nepieder pie identiskas izcelsmes.

Iespējot CORS atbalstu ASP.NET Web API

ASP.NET Web API nodrošina izcilu atbalstu CORS. Lai sniegtu atbalstu CORS ASP.NET Web API 2, jums jāizmanto pakete Microsoft.AspNet.WebApi.Cors NuGet. Lai instalētu šo pakotni, varat izpildīt šo komandu no NuGet pakotņu pārvaldnieka konsoles.

Instalēšanas pakotne Microsoft.AspNet.WebApi.Cors

Varat arī logā Solution Explorer atlasīt savu projektu un instalēt paketi, izmantojot NuGet pakotņu pārvaldnieku.

Ja izmantojat Web API 1.0, varat iespējot CORS atbalstu, iekļaujot šos apgalvojumus faila Global.asax.cs notikumu apstrādātājā Application_BeginRequest.

HttpContext.Current.Response.AddHeader ("Access-Control-Allow-Origin", atļautsOrigin);

HttpContext.Current.Response.AddHeader ("Piekļuves kontrole-Atļaut-metodes", "GET, POST");

Ņemiet vērā, ka šeit “allowOrigin” ir virknes mainīgais, kas satur tā pieprasījuma izcelsmi, kurš vēlas piekļūt resursam.

Atbalstu CORS var iespējot trīs līmeņos. Tie ietver sekojošo:

  • Darbības līmenis
  • Kontroliera līmenis
  • Globālā līmenī

Iespējot CORS globālā līmenī

Lai iespējotu CORS globālā līmenī, jums jāizmanto HttpConfiguration klases EnableCors metodes priekšrocības, kā parādīts tālāk sniegtajā koda fragmentā.

public static void Register (HttpConfiguration config)

        {

virknes izcelsme = "// localhost: 50164 / WebClient /";

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

config.EnableCors (cors);

// Šeit norādiet Web API konfigurāciju un pakalpojumus

// Šeit norādiet Web API maršrutus

        }

    }

Skatiet iepriekš sniegto koda fragmentu. Ievērojiet, kā ir norādīta pieprasījuma izcelsme. Parametrs * nozīmē visas pieprasījuma galvenes. Tātad GET un POST pieprasījumi no norādītā domēna tiks pieņemti, visi pārējie pieprasījumi tiks noraidīti.

Iespējot CORS kontroliera līmenī

Jūs varat arī iespējot CORS atbalstu kontroliera līmenī. Lai to izdarītu, savam Web API kontrollerim norādiet atribūtu [EnableCors], kā parādīts zemāk.

  [EnableCors (origins: "// localhost: 50164 /", galvenes: "*", metodes: "*")]

publiskā klase AuthorsController: ApiController

    {  

// Šeit ierakstiet savas Web API kontroliera metodes

    }

Iespējot CORS darbības līmenī

Līdzīgi jūs varat arī iespējot CORS darbības līmenī, izmantojot atribūtu [EnableCORS]. Šeit ir piemērs, kas ilustrē, kā tas tiek darīts.

publiskā klase AuthorsController: ApiController

    {

[EnableCors (origins: "// localhost: 50164 /", galvenes: "*", metodes: "*")]

public IEnumerable Get ()

        {

atgriezt jaunu virkni [] {"Joydip Kanjilal", "Steve Smith"};

        }

    }

Atspējojiet CORS noteiktai darbībai

Tagad jums, iespējams, būs jāatspējo CORS konkrētai darbībai vai darbību grupai. Šī funkcija var būt noderīga, ja jau esat iespējojis CORS globālā līmenī un tagad drošības apsvērumu dēļ vēlaties to atspējot. Šis koda fragments parāda, kā to panākt, izmantojot atribūtu [DisableCors].

[DisableCors ()]

public IEnumerable Get ()

   {

atgriezt jaunu virkni [] {"Joydip Kanjilal", "Steve Smith"};

   }

Ja izmantojat ASP.NET Core, projektam, izmantojot NuGet, jāpievieno Microsoft.AspNetCore.Cors pakotne un pēc tam failā Startup.cs ierakstiet šo paziņojumu, lai iestatītu CORS atbalstu.

public void ConfigureServices (IServiceCollection pakalpojumi)

{

pakalpojumi.AddCors ();

}

Izmantojot CORS starpprogrammatūru, varat iespējot CORS - šajā ziņā varat izmantot paplašinājuma UseCors priekšrocības. Alternatīvi, jūs varat iespējot CORS kontrolierī vai darbību līmeņos, izmantojot EnableCors atribūtu, tāpat kā iepriekš šajā rakstā. Līdzīgi, lai atspējotu CORS, varat izmantot atribūtu [DisableCors].

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