Sobes.tech
Junior

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:

  1. 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 Origin fejléc hozzáadásával, amely a kérés forrását jelzi. A szerver, ezt a fejlécet fogadva, válaszolhat az Access-Control-Allow-Origin fejlécben megadott engedélyezett forrással.
  2. Preflight: A "nem egyszerű" kérésekhez (például PUT, DELETE mó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ó az Origin fejlé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.