Čo je Cors?
CORS je štandard W3C, čo znamená "Cross-origin resource sharing" (zdieľanie zdrojov medzi zdrojmi). Umožňuje prehliadaču posielať požiadavky XMLHttpRequest na servery naprieč originálmi, čím prekonáva obmedzenie, že AJAX môže byť použitý len homogénne.
1. Úvod
CORS vyžaduje podporu prehliadača aj servera. V súčasnosti túto funkciu podporujú všetky prehliadače a prehliadač IE nemôže byť nižší ako IE10.
Celý komunikačný proces CORS je automaticky vykonávaný prehliadačom a nevyžaduje účasť používateľa. Pre vývojárov komunikácia cez CORS sa nelíši od homologickej AJAX komunikácie a kód je úplne rovnaký. Keď prehliadač zistí, že požiadavka AJAX prechádza cez zdroj, automaticky pridá ďalšie informácie v hlavičke a niekedy ešte jednu požiadavku, ale používateľ to nepocíti.
Preto je kľúčom k dosiahnutiu komunikácie CORS server. Pokým server implementuje rozhranie CORS, môže komunikovať naprieč zdrojmi.
V skutočnosti webové serverové programy (ako ASP.NET alebo PHP a pod.) nedokážu rozlíšiť a nebudú spravovať, či prichádzajúci Http request je Ajax požiadavka naprieč doménami.CORS je navrhnutý na riešenie tohto problému a vlastný štandard CORS W3C poskytuje prehliadačom mechanizmus na povolenie požiadaviek Ajaxu naprieč doménami.
2: Natívny kód požiadaviek pre JS Ajax
Keďže nechcem odkazovať na jQuery, zapuzdril som nasledujúce metódy pomocou js, nasledovne:
Ajax žiada rozhranie a nájde chybu nasledovne:
Tretie: Nastaviť metódu kontroléra tak, aby umožnila prechod cez domény
Ako takVšetci sú povoleníMetóda ovládača alebo API je cross-domain, v súbore web.configsystem.webServerPod uzlom sa pridáva nasledujúca konfigurácia:
Vyššie uvedené nie je výsledok, ktorý sme chceli! Ak chceme povoliť prístup k jednému z našich rozhraní naprieč doménami, musíme definovať funkciu, ktorá vyzerá takto:
Kód na nastavenie oprávnení prístupu medzi doménami je tento odsek HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", origin);
Charakteristiky na základe riadiacej metódy nastavujeme nasledovne:
Znovu spustíme požiadavku Ajaxu s výsledkom, ktorý je zobrazený nižšie:
Zdroje API rozhrania z našich ostatných webových stránok sú úspešne prístupné.
(Koniec)
|