Mi az a CORS?
sobes.tech MI
Válasz az MI-től
A CORS (Cross-Origin Resource Sharing) egy olyan mechanizmus, amely lehetővé teszi a weboldalak számára, hogy erőforrásokat kérjenek más domainről, portról vagy protokollról, mint ahonnan a oldal betöltődött. Ez további HTTP fejléc segítségével történik.
Alapértelmezés szerint a böngészők alkalmazzák a Same-Origin Policy (SOP) politikát, amely megtiltja, hogy ugyanazon oldalról származó szkriptek hozzáférjenek más forrásból származó adatokhoz (domain, port, protokoll). A CORS ezt a politikát kontrollált módon enyhíti, lehetővé téve a szerver számára, hogy kifejezetten engedélyezze a kereszt-domén kéréseket.
A CORS működése:
- Egyszerű kérés: Ha a kérés megfelel bizonyos kritériumoknak (például GET vagy POST módszer használata, csak bizonyos fejléc értékek engedélyezettek), a böngésző közvetlenül küldi a kérést az
Originfejléc hozzáadásával, amely a kérés forrását jelzi. A szerver, ezt a fejlécet fogadva, válaszolhat azAccess-Control-Allow-Originfejlécben megadott engedélyezett forrással. - Preflight: A "nem egyszerű" kérésekhez (például
PUT,DELETEmódszerek vagy egyedi fejléc használata esetén) a böngésző először egy előzetes (OPTIONS) kérdést küld. Ez megkérdezi a szervert, hogy az adott fő kérés engedélyezett-e. A szerver válaszol a megengedett módszereket, fejléc értékeket és forrásokat tartalmazó fejléc értékekkel. Ha a preflight sikeres, a böngésző elküldi a tényleges kérés.
A CORS fő fejléc értékei:
Origin: A böngésző által a kérésben küldött, a kérés forrását (domain, port, protokoll) jelző fejléc.Access-Control-Allow-Origin: A szerver által a válaszban küldött fejléc, amely megadja, hogy mely források fogadhatják a választ. Lehet konkrét domain,*(bármilyen forrás), vagy dinamikusan generálható azOriginfejléc alapján.Access-Control-Allow-Methods: A szerver által a preflight válaszban küldött fejléc, amely megadja az engedélyezett HTTP módszereket (GET, POST, PUT, DELETE stb.).Access-Control-Allow-Headers: A szerver által a preflight válaszban küldött fejléc, amely megadja az engedélyezett kérés fejléc értékeket.Access-Control-Allow-Credentials: A szerver által a válaszban küldött fejléc, amely megadja, hogy engedélyezett-e a cookie-k és egyéb hitelesítési adatok fogadása.
Példa a szerver válasz fejléc értékekre, amelyek engedélyezik a https://example.com-ról érkező kéréseket:
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, Authorization
A CORS szükséges sok webalkalmazás helyes működéséhez, amelyek kereszt-domén AJAX kéréseket használnak, például API kommunikáció, betűtípusok betöltése, Web Fonts CDN-n keresztüli használata stb. A CORS helyes konfigurálása a szerveren kritikus a biztonság és a funkcionalitás szempontjából.