Sobes.tech
Junior

Ի՞նչ է CORS-ը։

sobes.tech AI

Պատասխան AI-ից

CORS (Cross-Origin Resource Sharing) — դա մեխանիզմ է, որը թույլ է տալիս վեբ էջերին խնդրել ռեսուրսներ այլ դոմենից, պորտից կամ պրոտոկոլից, որը տարբերվում է այն բանից, որտեղից բեռնվել է ինքն էջը: Դա կատարվում է լրացուցիչ HTTP գլխիկներով:

Նախնական, բրաուզերները կիրառում են Same-Origin Policy (SOP) քաղաքականությունը, որը արգելում է նույն էջում աշխատող սքրիպտներին մուտք ունենալ տվյալներ այլ աղբյուրներից (դոմեն, պորտ, պրոտոկոլ): CORS-ը մեղմում է այս քաղաքականությունը վերահսկվող կերպով՝ թույլ տալով սերվերին հստակ թույլ տալ cross-domain հարցումները:

Ինչպես է աշխատում CORS-ը:

  1. Պարզ հարցում: Եթե հարցումը համապատասխանում է որոշակի չափանիշների (օրինակ, օգտագործում է GET կամ POST մեթոդ, թույլատրված են միայն որոշակի գլխիկներ), բրաուզերը ուղարկում է հարցումը ուղիղ Origin գլխիկով, որը ցույց է տալիս հարցման աղբյուրը: Սերվերը, ստանալով այս գլխիկը, կարող է պատասխանել Access-Control-Allow-Origin գլխիկով, որը ցույց է տալիս թույլատրված աղբյուրը:
  2. Preflight հարցում: Անհրաժեշտ, երբ հարցումները չեն համարվում պարզ, օրինակ, օգտագործվում են PUT, DELETE մեթոդներ կամ օգտագործվում են հատուկ գլխիկներ: Բրաուզերը նախ ուղարկում է նախնական OPTIONS հարցում, որը հարցնում է սերվերին, արդյոք թույլատրվում է ուղարկել նպատակային հարցումը: Սերվերը պատասխանում է գլխիկներով, որոնք նշում են թույլատրված մեթոդները, գլխիկները և աղբյուրները: Եթե preflight հարցումը հաջող է անցնում, բրաուզերը ուղարկում է իրական հարցումը:

CORS-ի հիմնական գլխիկները:

  • Origin: Ուղարկվում է բրաուզերից հարցման մեջ, ցույց է տալիս հարցման աղբյուրը:
  • Access-Control-Allow-Origin: Ուղարկվում է սերվերից պատասխանով, ցույց է տալիս, թե որ աղբյուրին է թույլատրված պատասխան ստանալ: Կարող է լինել կոնկրետ դոմեն, * (յուրաքանչյուր աղբյուր), կամ սերվերի կողմից դինամիկ գեներացված՝ հիմնված Origin գլխիկի վրա:
  • Access-Control-Allow-Methods: Ուղարկվում է սերվերից preflight պատասխանով, ցույց է տալիս թույլատրված HTTP մեթոդները:
  • Access-Control-Allow-Headers: Ուղարկվում է սերվերից preflight պատասխանով, ցույց է տալիս թույլատրված հարցման գլխիկները:
  • Access-Control-Allow-Credentials: Ուղարկվում է սերվերից պատասխանով, ցույց է տալիս, թույլատրվում է արդյոք ընդունել կուկի և այլ վավերական տվյալներ հարցում:

Օրինակ՝ սերվերի պատասխան գլխիկներ, որոնք թույլատրում են հարցումներ 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-ը անհրաժեշտ է շատ վեբ հավելվածների ճիշտ աշխատանքի համար, որոնք օգտագործում են cross-origin AJAX հարցումներ, ինչպիսիք են API փոխգործակցությունը, ֆոնտների բեռնումը, վեբ ֆոնտների օգտագործումը CDN-ներից և այլն: Սերվերի վրա ճիշտ CORS կարգավորումը կարևոր է անվտանգության և գործառնականության համար։