Šta je CORS?
sobes.tech АИ
Одговор од АИ
CORS (Cross-Origin Resource Sharing) je mehanizam koji omogućava veb stranicama da zahtevaju resurse sa drugog domena, porta ili protokola, različitog od onoga sa kojeg je učitana sama stranica. To se radi pomoću dodatnih HTTP zaglavlja.
Podrazumevano, pregledači primenjuju politiku Same-Origin Policy (SOP), koja zabranjuje skriptovima koji se izvršavaju na jednoj stranici pristup podacima sa drugog izvora (domena, port, protokol). CORS ublažava ovu politiku kontrolisanim načinom, omogućavajući serveru da eksplicitno dozvoli cross-domain zahteve.
Kako funkcioniše CORS:
- Jednostavan zahtev: Ako zahtev ispunjava određene kriterijume (na primer, koristi metodu GET ili POST, dozvoljene su samo određene zaglavlja), pregledač šalje zahtev direktno sa dodatnim zaglavljem
Origin, koje ukazuje na izvor zahteva. Server, prilikom primanja ovog zaglavlja, može odgovoriti saAccess-Control-Allow-Origin, koji ukazuje dozvoljeni izvor. - Preflight zahtev: Za "neproste" zahteve (na primer, sa korišćenjem metoda
PUT,DELETE, ili sa korisničkim zaglavljima), pregledač najpre šalje preliminarni (preflight)OPTIONS-zahtev. Ovaj zahtev pita server da li je dozvoljeno slanje ciljanog zahteva. Server odgovara sa zaglavljima koja ukazuju dozvoljene metode, zaglavlja i izvore. Ako preflight zahtev uspešno prođe, pregledač šalje sam zahtev.
Glavna zaglavlja CORS:
Origin: Šalje se od strane pregledača u zahtevu, ukazuje na izvor (domen, port, protokol) stranice koja inicira zahtev.Access-Control-Allow-Origin: Šalje se od strane servera u odgovoru, ukazuje na izvor kojem je dozvoljeno da prima odgovor. Može biti konkretan domen,*(bilo koji izvor), ili dinamički generisan od strane servera na osnovu zaglavljaOrigin.Access-Control-Allow-Methods: Šalje se od strane servera u odgovoru na preflight zahtev, ukazuje na dozvoljene HTTP metode (GET, POST, PUT, DELETE itd.).Access-Control-Allow-Headers: Šalje se od strane servera u odgovoru na preflight zahtev, ukazuje na dozvoljena zaglavlja zahteva.Access-Control-Allow-Credentials: Šalje se od strane servera u odgovoru, ukazuje da li je dozvoljeno prihvatanje kolačića i drugih identifikacionih podataka u zahtevu.
Primer zaglavlja odgovora servera koji dozvoljava zahteve sa 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 neophodan za ispravan rad mnogih veb aplikacija koje koriste cross-origin AJAX zahteve, kao što su API interakcije, učitavanje fontova, korišćenje web fontova sa CDN-a i slično. Ispravno podešavanje CORS na serveru je ključno za sigurnost i funkcionalnost aplikacije.