
Találtam egy bejegyzést CORS témában és úgy gondoltam, hogy írok egy cikket a témában, ezzel is rögzítve az olvasottakat. A legtöbbször front-end fejlesztők találhatják magukat szemben az alábbi hibával:

Alapvetően tényleg egy rendszeresen felmerülő félreértés, hogy mi is maga a CORS. Sokan gondolják azt, hogy egy backend-et védő mechanizmus, pedig alapjáraton a lényeg nem a backenden történik! Ha a CORS tényleg egy back-end védelem, akkor hogyan lehetséges az, hogy Insomniából vagy Postman-ből gond nélkül intézhetünk hívásokat ilyen jellegű hiba nélkül?!
Példa
Lássunk egy példát, amiből megérthetjük a CORS lényegét! Tegyük fel, hogy ellátogatunk a bankunk oldalára, például az enbankom.com-ra. Itt bejelentkezünk az adatainkkal és úgynevezett cookiek (sütik) keletkeznek a böngészőben.
Ezután meglátogatunk egy más jellegű oldalt, például a filmletoltooldal.hu-t. Ezen az oldalon mondjuk lefut egy script, ami intéz egy kérést az ottani backend felé aminek a "credentials" értéke "include"-ra van állítva. Ennek következtében a korábban a cookiek közé került banki adatok mind szépen küldődnek a filmletoltooldal.hu backendje felé, ami nem biztos, hogy szerencsés, semmilyen szempontból sem! Hiszen az sem szerencsés, ha mondjuk a filmletoltooldal.hu egy kérést intéz a bank felé a hitelesített cookie adatokkal, mert illetéktelenül hajthatna végre kéréseket a bankunk oldalán.
Na, itt jön képbe a böngésző által kikényszerített mechanizmus: a CORS!
A CORS megakadályozza a jogosulatlan webhelyekről érkező, különböző eredetű kéréseket. Fontos megjegyezni, hogy nem közvetlenül a backendet védi, hanem a böngésző érvényesíti a szabályokat. Azt is fontos tudni, hogy a CORS egyébként pluginokkal megkerülhető, így nem nyújt teljes biztonságot, de mindenképpen egy biztonságosabb mederbe tereli a front-end és a backe-end kommunikációját és az adatok kezelését egy átlag felhasználó számára.
Így remélem már világosabb, hogy miért is csak böngészővel kapcsolatban merül fel ez a kérdés és, hogy mit is jelent pontosan ez a "hibaüzenet".