Mis on CORS?
sobes.tech AI
Vastus AI-lt
CORS (Cross-Origin Resource Sharing) on mehhanism, mis võimaldab veebilehtedel pärida ressursse teiselt domeenilt, pordilt või protokollilt, mis erineb sellest, kust leht ise on laaditud. Seda tehakse täiendavate HTTP päiste abil.
Vaikimisi rakendavad brauserid Same-Origin Policy (SOP), mis keelab ühe lehe skriptidel pääseda andmetele teise allika (domeen, port, protokoll) kaudu. CORS leevendab seda poliitikat kontrollitaval viisil, võimaldades serveril selgelt lubada cross-domain päringuid.
Kuidas CORS töötab:
- Lihtne päring: Kui päring vastab teatud kriteeriumidele (näiteks kasutab GET või POST meetodit, lubatud on ainult teatud päised), saadab brauser otse päringu täiendava
Originpäisega, mis näitab päringu allikat. Server, selle päise saades, võib vastataAccess-Control-Allow-Originpäisega, mis näitab lubatud allikat. - Preflight päring: Mitte-lihtsad päringud (näiteks kasutades
PUT,DELETEmeetodeid või kasutaja päiseid) saadab brauser esmalt eelkontrolli (preflight)OPTIONSpäringu. See päring küsib serverilt, kas on lubatud saata sihtpäringut. Server vastab päistega, mis näitavad lubatud meetodeid, päiseid ja allikaid. Kui preflight on edukas, saadab brauser ise päringu.
CORS-i peamised päised:
Origin: Saadetakse brauserist päringuga, näidates allikat (domeen, port, protokoll), mis päringut algatas.Access-Control-Allow-Origin: Saadetakse serverilt vastusega, näidates allikat, kellele on lubatud vastust saada. Võib olla konkreetne domeen,*(kõik allikad), või dünaamiliselt genereeritud serveri pooltOriginpäise põhjal.Access-Control-Allow-Methods: Saadetakse serverilt preflight vastusega, näidates lubatud HTTP meetodeid (GET, POST, PUT, DELETE jms).Access-Control-Allow-Headers: Saadetakse serverilt preflight vastusega, näidates lubatud päringu päiseid.Access-Control-Allow-Credentials: Saadetakse serverilt vastusega, näidates, kas on lubatud vastu võtta küpsiseid ja muid autentimisandmeid päringus.
Näide serveri vastuse päistest, mis lubavad päringuid https://example.com-st:
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, Authorization
CORS on vajalik paljude veebirakenduste korrektseks toimimiseks, kasutades cross-origin AJAX-päringuid, nagu API-vahetus, fontide laadimine, veebifontide kasutamine CDN-ist jms. Õige CORS-i seadistamine serveris on kriitiline turvalisuse ja funktsionaalsuse jaoks.