Sobes.tech
Junior

CORS nima?

sobes.tech AI

AIdan javob

CORS (Cross-Origin Resource Sharing) — bu mexanizm bo‘lib, veb-sahifalarga boshqa domen, port yoki protokoldan resurslarni so‘rash imkonini beradi. Bu qo‘shimcha HTTP sarlavhalari yordamida amalga oshiriladi.

Standart ravishda, brauzerlar Same-Origin Policy (SOP) siyosatini qo‘llaydi, bu esa bir sahifadagi skriptlarning boshqa manbadan (domen, port, protokol) ma'lumotlarga kirishini taqiqlaydi. CORS bu siyosatni nazorat qilinadigan tarzda yumshatadi, serverga aniq ruxsat berish imkonini beradi.

CORS qanday ishlaydi:

  1. Oddiy so‘rov: Agar so‘rov ma'lum shartlarga javob bersa (masalan, GET yoki POST metodlaridan foydalanilsa, faqat ma'lum sarlavhalar ruxsat etilgan bo‘lsa), brauzer Origin sarlavhasi bilan to‘g‘ridan-to‘g‘ri so‘rov yuboradi. Server, bu sarlavhani olgach, Access-Control-Allow-Origin sarlavhasi bilan ruxsat etilgan manbani javob qiladi.
  2. Preflight: PUT, DELETE kabi metodlar yoki maxsus sarlavhalar bilan so‘rovlar uchun, brauzer avval OPTIONS so‘rovini yuboradi. Bu so‘rov serverga asosiy so‘rov ruxsat etilganmi yoki yo‘qligini so‘raydi. Server, ruxsat etilgan metodlar, sarlavhalar va manbalarni ko‘rsatadigan sarlavhalar bilan javob beradi. Agar preflight muvaffaqiyatli bo‘lsa, brauzer haqiqiy so‘rovni yuboradi.

CORS ning asosiy sarlavhalari:

  • Origin: Brauzer tomonidan so‘rovda yuboriladi, so‘rov yuborayotgan sahifaning manbaini (domen, port, protokol) ko‘rsatadi.
  • Access-Control-Allow-Origin: Server tomonidan javobda yuboriladi, javobni qabul qilish mumkin bo‘lgan manbaini ko‘rsatadi. Bu aniq domen, * (har qanday manba) yoki Origin sarlavhasiga asoslangan dinamik tarzda bo‘lishi mumkin.
  • Access-Control-Allow-Methods: Preflight javobida server tomonidan yuboriladi, ruxsat etilgan HTTP metodlarini ko‘rsatadi (GET, POST, PUT, DELETE va boshqalar).
  • Access-Control-Allow-Headers: Preflight javobida server tomonidan yuboriladi, ruxsat etilgan so‘rov sarlavhalarini ko‘rsatadi.
  • Access-Control-Allow-Credentials: Javobda server tomonidan yuboriladi, cookie va boshqa identifikatsiya ma'lumotlarini qabul qilish ruxsat etilganmi yoki yo‘qligini ko‘rsatadi.

Misol uchun, https://example.com dan so‘rovlarni ruxsat etadigan server javob sarlavhalari:

Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, Authorization

CORS ko‘plab veb-ilovalar, masalan, API bilan o‘zaro ta'sir, shriflarni yuklash, CDN bilan Web Fonts ishlatish kabi, domenlararo AJAX so‘rovlar uchun muhimdir. To‘g‘ri CORS sozlamalari xavfsizlik va funksionallik uchun juda muhimdir.