Web Developmentpokročilý

Č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 Origin a server odpovie hlavičkou Access-Control-Allow-Origin
  • Preflight požiadavka — pri „nebezpečných" požiadavkách (PUT, DELETE, vlastné hlavičky) prehliadač najprv pošle OPTIONS pož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á.