Čo je CORS (Cross-Origin Resource Sharing)?
CORS je bezpečnostný mechanizmus prehliadačov, ktorý umožňuje webovej stránke pristupovať k zdrojom na inom serveri (iný origin). Bez CORS by prehliadače blokovali všetky požiadavky medzi rôznymi doménami kvôli politike rovnakého pôvodu (same-origin policy).
Definícia CORS (Cross-Origin
Čo je CORS
CORS (Cross-Origin Resource Sharing, po slovensky zdieľanie zdrojov medzi rôznymi pôvodmi) je mechanizmus, ktorý umožňuje bezpečne obísť same-origin policy (politiku rovnakého pôvodu) vo webových prehliadačoch. Špecifikácia je súčasťou WHATWG Fetch Living Standard a predchádzajúca verzia bola publikovaná ako odporúčanie W3C.
Origin (pôvod) je kombinácia protokolu, domény a portu. Napríklad https://example.com:443 je iný origin ako http://example.com:80 alebo https://api.example.com:443.
Ako CORS funguje
- Jednoduché požiadavky — prehliadač pridá hlavičku
Origina server odpovie hlavičkouAccess-Control-Allow-Origin - Preflight požiadavka — pri „nebezpečných" požiadavkách (PUT, DELETE, vlastné hlavičky) prehliadač najprv pošle
OPTIONSpožiadavku, aby zistil, či server daný cross-origin prístup povolí - Credentials — ak požiadavka obsahuje cookies alebo autentifikačné údaje, server musí explicitne nastaviť
Access-Control-Allow-Credentials: true
Dôležité CORS hlavičky na strane servera sú: Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers a Access-Control-Max-Age (ako dlho sa smie cachovať výsledok preflight požiadavky).
Praktický príklad
Príklad: Vaša webstránka beží na https://www.mojastranka.sk a JavaScript na nej chce získať dáta z API na https://api.mojastranka.sk.
Keďže ide o iný origin (subdoména sa líši), prehliadač zablokuje požiadavku — pokiaľ server API neodpovie hlavičkou Access-Control-Allow-Origin: https://www.mojastranka.sk. Bez tejto hlavičky uvidíte v konzole typickú chybu: „CORS policy: No 'Access-Control-Allow-Origin' header is present".
Často kladené otázky
Čo je CORS a prečo existuje?
CORS je bezpečnostný mechanizmus prehliadačov, ktorý reguluje, z akých domén smie webová stránka pristupovať k zdrojom. Existuje na ochranu používateľov pred neoprávneným prístupom k dátam na iných serveroch.
Prečo dostávam CORS chybu a ako ju opraviť?
CORS chyba znamená, že server nepovolil prístup z vášho originu. Opravíte ju nastavením správnych CORS hlavičiek na serveri — predovšetkým Access-Control-Allow-Origin s hodnotou vašej domény.
Čo je preflight požiadavka?
Preflight je automatická OPTIONS požiadavka, ktorú prehliadač pošle pred skutočnou požiadavkou, ak tá používa „nebezpečné" metódy (PUT, DELETE) alebo vlastné hlavičky. Server v odpovedi povolí alebo zamietne cross-origin prístup.
Súvisiace pojmy
Potrebujete pomôcť s webom?
Napíšte mi a poradím vám s vaším projektom. Prvá konzultácia je zadarmo a nezáväzná.