Čo je CORS?
sobes.tech AI
Odpoveď od AI
CORS (Cross-Origin Resource Sharing) je mechanizmus, ktorý umožňuje webovým stránkam žiadať zdroje z iného domény, portu alebo protokole, odlišného od toho, z ktorého bola načítaná samotná stránka. To sa robí pomocou doplnkových HTTP hlavičiek.
Predvolene prehliadače uplatňujú politiku Same-Origin Policy (SOP), ktorá zakazuje skriptom bežiacim na jednej stránke prístup k údajom z iného zdroja (domény, portu, protokolu). CORS zmierňuje túto politiku kontrolovaným spôsobom, umožňujúc serveru jasne povoliť cross-domain požiadavky.
Ako CORS funguje:
- Jednoduchá požiadavka: Ak požiadavka spĺňa určité kritériá (napríklad používa metódu GET alebo POST, povolené sú iba určité hlavičky), prehliadač odošle požiadavku priamo s doplnkovou hlavičkou
Origin, ktorá uvádza zdroj požiadavky. Server pri prijatí tejto hlavičky môže odpovedať hlavičkouAccess-Control-Allow-Origin, ktorá uvádza povolený zdroj. - Preflight požiadavka: Pre "nepriame" požiadavky (napríklad s použitím metód
PUT,DELETE, alebo s používateľskými hlavičkami), prehliadač najskôr odošle predbežný (preflight)OPTIONS-požiadavku. Táto požiadavka sa pýta server, či je povolené odoslať cieľovú požiadavku. Server odpovedá hlavičkami, ktoré uvádzajú povolené metódy, hlavičky a zdroje. Ak je preflight požiadavka úspešná, prehliadač odošle samotnú požiadavku.
Hlavné hlavičky CORS:
Origin: Odosiela sa od prehliadača v požiadavke, uvádza zdroj (doménu, port, protokol) stránky, ktorá iniciovala požiadavku.Access-Control-Allow-Origin: Odosiela sa od servera v odpovedi, uvádza zdroj, ktorému je povolené odpoveď prijímať. Môže byť konkrétny doménou,*(akýkoľvek zdroj), alebo dynamicky generovaný serverom na základe hlavičkyOrigin.Access-Control-Allow-Methods: Odosiela sa od servera v odpovedi na preflight požiadavku, uvádza povolené HTTP metódy (GET, POST, PUT, DELETE a pod.).Access-Control-Allow-Headers: Odosiela sa od servera v odpovedi na preflight požiadavku, uvádza povolené hlavičky požiadavky.Access-Control-Allow-Credentials: Odosiela sa od servera v odpovedi, uvádza, či je povolené prijímať cookies a iné prihlasovacie údaje v požiadavke.
Príklad hlavičiek odpovede servera, povolujúcich požiadavky z https://example.com:
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, Authorization
CORS je nevyhnutný pre správnu funkčnosť mnohých webových aplikácií využívajúcich cross-origin AJAX požiadavky, ako je API komunikácia, načítanie fontov, používanie webových fontov z CDN a pod. Správne nastavenie CORS na serveri je kľúčové pre bezpečnosť a funkčnosť aplikácie.