Sobes.tech
Junior

CORS деген эмне?

sobes.tech AI

AIден жооп

CORS (Cross-Origin Resource Sharing) — бул механизм, ал веб-баракчаларга башка домен, порт же протоколдон ресурстарды сурап алууга мүмкүндүк берет, ал ошол баракчаны жүктөгөндөн башка. Бул HTTP кошумча башталыштары аркылуу ишке ашырылат.

Дефолт боюнча, браузерлер Same-Origin Policy (SOP) саясатын колдонушат, ал бир баракчада иштеген скрипттерге башка булактан (домен, порт, протокол) маалыматка жетүүгө тыюу салат. CORS бул саясатты көзөмөлдөнүүчү жол менен жумшартат, серверге кросс-домен суроолорду так уруксат берүүгө мүмкүнчүлүк берет.

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 ыкмаларын көрсөтөт (GET, POST, PUT, DELETE жана башка).
  • 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 туура орнотуу коопсуздук жана функционалдуулук үчүн өтө маанилүү.