Накратко
CORS е механизъм с HTTP заглавки за достъп от браузърен код до ресурси от друг произход. Той не замества удостоверяването на потребителите.
Полезно е да знаеш
При уеб адресите произходът се определя от схема, домейн и порт. Промяната на някоя от тези части може да постави два адреса в различни произходи. Когато JavaScript в една страница иска да прочете отговор от друг произход, браузърът прилага правила за достъп. CORS е механизмът, чрез който сървърът може да посочи как такъв отговор да бъде споделен с кода на страницата. Той използва HTTP заглавки и участва в работата на браузъра. [1]
Заглавката Access-Control-Allow-Origin посочва за кой произход може да бъде споделен отговорът. [2] Важно е да разграничим две действия: сървърът обработва заявка и браузърният код получава право да прочете нейния отговор. CORS не е универсална забрана всички други програми да се свързват със сървъра. Затова проектирането на достъпа не може да приключи с тази заглавка. Защитата на самите данни трябва да бъде разглеждана отделно от разрешението за четене в браузъра.
Нека разгледаме измислен каталог на библиотека. Публичният сайт е на един адрес, а услугата за търсене е на друг. Екипът очаква страницата да показва резултати от тази услуга. Ако връзката не работи, полезно е да запишем началния адрес, целевия адрес и действителния произход на страницата. Този малък опис предотвратява догадки като „домейнът изглежда почти същият“. За техническото правило има значение точната стойност, а не визуалното сходство между имената.
При част от заявките браузърът първо изпраща предварителна проверка, наречена preflight. Тя съобщава какви метод и заглавки се предвиждат за същинската заявка. Сървърът отговаря дали това е позволено. [1] При заявки с идентификационни данни има допълнителни ограничения: звездичката в Access-Control-Allow-Origin не замества конкретен разрешен произход за споделяне на такъв отговор. [2] Това е причина разрешенията да се описват според реалната употреба, вместо механично да се поставя най-широката видима стойност.
За практически тест е добре да се използва самата страница, която ще изпълнява заявката. Успешното отваряне на адреса в отделен раздел не доказва, че кодът от друг произход ще може да прочете отговора. В учебен пример можем да сравним разрешен и неразрешен произход и да запишем какво вижда приложението във всеки случай. Използват се тестови данни, така че диагностиката да не променя реални записи.
Доброто обяснение на настройката включва три конкретни неща: коя страница има нужда от отговора, от кой адрес го получава и защо това споделяне е необходимо. След това се проверява дали правилото съвпада с тези нужди. Така CORS остава разбираем договор за браузърния достъп. Не е нужно да се приема за загадъчна грешка, нито да се разширява безкрайно само за да изчезне съобщението от конзолата.
Източници
За повече подробности и проверка на информацията: