Sobes.tech
Junior

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:

  1. 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 Origin päisega, mis näitab päringu allikat. Server, selle päise saades, võib vastata Access-Control-Allow-Origin päisega, mis näitab lubatud allikat.
  2. Preflight päring: Mitte-lihtsad päringud (näiteks kasutades PUT, DELETE meetodeid või kasutaja päiseid) saadab brauser esmalt eelkontrolli (preflight) OPTIONS pä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 poolt Origin pä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.