Кросс-домендік сұраулар (CORS)
CORS (Cross-Origin Resource Sharing) — кросс-домендік сұрауларды өңдеу ережелерін орнатуға мүмкіндік беретін механизм. Әдепкі бойынша браузерлер веб-қолданба бір доменде орналастырылып, ал басқа доменде орналасқан дереккөзге API шақырған кезде қолжетімділікті бұғаттайды. Бұл ресурстарға рұқсатсыз қолжетімділіктің алдын алу үшін жасалады. VK Object Storage сервисінде CORS қолдауының арқасында сіз бұл шектеуді айналып өтіп, басқа домендерде орналастырылған клиенттік веб-қолданбалар үшін өз бакеттеріңізге қолжетімділікті таңдаулы түрде рұқсат ете аласыз.
Бакет үшін СORS механизмін екі тәсілмен қосуға болады:
- Жеке кабинетте әр CORS ережесін жеке-жеке орнату.
- API көмегімен барлық CORS ережелерінің XML-конфигурациясын жүктеу.
Әр бакет үшін өз CORS ережелері бапталады, онда келесі параметрлер көрсетіледі:
AllowedOrigins— бакетке сұрауларға рұқсат етілген домендер.AllowedMethods— сұрауларда рұқсат етілген HTTP әдістері.- (Қосымша)
MaxAgeSeconds— пайдаланушы браузері алдын ала сұраудың нәтижелерін кэште сақтай алатын секундтармен берілген уақыт. - (Қосымша)
AllowedHeaders— сұрауларда рұқсат етілген тақырыптар. - (Қосымша)
ExposeHeaders— сұрауға жауапта пайдаланушыға қолжетімді болатын тақырыптар.
CORS-сұрау — Origin тақырыбын қамтитын HTTP-сұрау. Бұл тақырыпта сұрауды бастаушының домені көрсетіледі. Егер CORS-сұрау деректердің өзгеруіне әкелуі мүмкін болса, ол қауіпсіз емес деп қарастырылады және екі кезеңде орындалады:
- Сұралатын ресурс үшін CORS шектеулерін тексеретін алдын ала сұрау (preflight request).
- Ресурсты алуға бағытталған негізгі сұрау.
Алдын ала сұрау OPTIONS әдісін қолданады және негізгі сұраудың параметрлерін қамтиды: тақырыптар, HTTP әдісі және домен (Origin).
VK Object Storage браузерден алдын ала сұрауды алған кезде, сұралатын бакет үшін CORS конфигурациясын талдайды және сұрауды қабылдауы немесе қабылдамауы мүмкін. Сұрау қабылдануы үшін келесі шарттар орындалуы тиіс:
Originтақырыбында көрсетілген домен бакеттің CORS конфигурациясындағыAllowedOriginsтізіміне енгізілуі тиіс.- Сұрауда көрсетілген HTTP әдісі бакеттің CORS конфигурациясындағы
AllowedMethodsтізіміне енгізілуі тиіс. - Сұрауда көрсетілген тақырыптар бакеттің CORS конфигурациясындағы
AllowedHeadersтізіміндегі тақырыптарға сәйкес келуі тиіс.
Егер алдын ала сұрау қабылданбаса, браузер негізгі сұрауды жіберуді бұғаттайды.
Егер алдын ала сұрау қабылданса, VK Object Storage бакеттің CORS конфигурациясы туралы ақпаратты қайтарады. Браузер бұл ақпаратты CORS конфигурациясындағы MaxAgeSeconds параметрінде көрсетілген кезең бойы кэште сақтай алады.
Алдын ала сұрауға жауаптарды кэштеу VK Object Storage қызметімен жұмыс істеу өнімділігін едәуір арттыруы мүмкін, өйткені қажетті сұраулар санын азайтады. Сол бакетке қайта сұрау жібергенде, егер бакеттің CORS конфигурациясы туралы деректер браузер кэшінде бар болса, алдын ала сұрау қажет болмайды.