CORS és Same-Origin Policy
Same-Origin Policy és CORS közérthetően: mit korlátoz a böngésző, mikor van preflight, és miért nem autentikáció a CORS?
Röviden
A Same-Origin Policy a böngésző egyik alapvető izolációs szabálya. A CORS HTTP headerekkel kontrollált kivételt adhat arra, hogy egy másik originről futó frontend hozzáférhessen egy válaszhoz.
Mit jelent a cors és same-origin policy?
A Same-Origin Policy a böngésző egyik alapvető izolációs szabálya. A CORS HTTP headerekkel kontrollált kivételt adhat arra, hogy egy másik originről futó frontend hozzáférhessen egy válaszhoz.
Origin-engedélyezés böngészőben
Access-Control-Allow-Origin
https://app.bybence.co
✓ A böngésző engedheti a választ ennek az originnek.
A CORS böngészőben érvényesített hozzáférési szabály, nem önmagában szerveroldali autentikáció vagy jogosultságkezelés.
Hogyan működik a gyakorlatban?
Bizonyos cross-origin kéréseknél a böngésző előzetes OPTIONS preflightot küld. A szerver CORS válaszheaderei alapján a böngésző eldönti, átadhatja-e a választ a kliensoldali JavaScriptnek. Ettől maga az endpoint még nem lesz hitelesített vagy jogosultságvédett.
- Origin a séma + host + port kombinációja.
- A preflight nem minden kérésnél történik meg.
- Credentialed kérésnél különösen pontos allow-origin és credentials beállítás kell.
- A szerveroldali auth és authz CORS mellett is kötelező az érzékeny erőforrásoknál.
Gyakorlati fejlesztői szemlélet
API tervezésnél először azonosítsd a valóban engedélyezett frontend origint, majd csak a szükséges metódusokat és headereket engedd. A wildcardot ne használd reflexből olyan endpointon, ahol credential is szerepet kap.
Gyakori hibák és félreértések
- A CORS hibát szerveroldali hálózati blokkolásnak hinni.
- CORS-szal próbálni megvédeni egy nyilvánosan elérhető API kulcsot.
- Origin és URL fogalmát összekeverni.
Gyakori kérdések
A CORS megakadályozza, hogy valaki curlből hívja az API-t?
Nem. A CORS elsősorban böngésző által érvényesített hozzáférési szabály. A szerveroldali hitelesítés és jogosultságkezelés ettől külön kérdés.
Források és szabványok
A technikai részletekhez elsődleges szabványokat és karbantartott hivatalos dokumentációt használok. Frameworkök, böngészők és webes API-k idővel változhatnak, ezért implementálás előtt mindig ellenőrizd az aktuális dokumentációt is.
Kapcsolódó ByBence Academy