Кратко
- Проект W3C от февраля 2007 года предложил владельцу ресурса разрешать чтение ответа страницам других сайтов. В проекте CORS от марта 2009 года подробнее описаны Origin запрашивающей страницы, разрешающий ответ ресурса и проверка в браузере.
- Рекомендация января 2014 года определила проверку
Access-Control-Allow-Origin. Для некоторых методов или заданных программой заголовков сначала нужен запрос OPTIONS; простой запрос может дойти до сервера, даже если программа не получит права прочитать ответ.
Страница строит график погоды, а измерения лежат у соседа. Она знает, куда обратиться. Но браузер не раздаёт каждой открытой странице право читать ответы с любого другого происхождения. Сетевая доставка и доступ программы к содержимому ответа — разные вещи. CORS позволил хозяину данных сказать, кому он откроет ответ, а браузеру — проверить это разрешение.
В проекте W3C от 15 февраля 2007 года Enabling Read Access for Web Resources владелец ресурса мог ослабить ограничение на чтение с помощью заголовка HTTP или инструкции XML. Способы указать допустимые хосты ещё обсуждались. Это был предшественник, а не окончательный CORS. Однако принцип уже появился: право читать чужой ответ объявляет тот, кто публикует ресурс. Проект CORS от 17 марта 2009 года развил разговор между Origin в запросе, заголовками разрешения в ответе и браузером, который сопоставляет их.
Рекомендация W3C от 16 января 2014 года показывает, как ресурс отвечает заголовком Access-Control-Allow-Origin, называя допустимое происхождение. Браузер сверяет его с происхождением страницы и после успешной проверки даёт её программе прочитать ответ. Для общедоступного ресурса без учётных данных существует широкий вариант *. С учётными данными требуется совпадающее конкретное происхождение и Access-Control-Allow-Credentials: true. Объявление «вход свободный» и приглашение по имени открывают разные двери.
Иногда браузер сначала спрашивает, можно ли вообще приходить с таким запросом. Если программа выбирает метод или собственные заголовки вне простого набора, она вызывает предварительную проверку OPTIONS. Сервер отвечает, какие методы и заголовки допустимы для данного Origin. Браузер оценивает ответ и может ненадолго запомнить результат. Такая проверка нужна при определённых условиях, а не перед каждым межсайтовым запросом. Не стоит искать отсутствующий звонок в дверь там, где никто не должен был звонить.
Главная тонкость: простой запрос может достичь сервера, который уже обработает его, даже если браузер позже скроет ответ от программы страницы. Раздел о безопасности в рекомендации прямо отделяет разрешение самого запроса и его побочных эффектов от разрешения читать возвращённые данные. Право изменить счёт или отправить деньги должен проверять сервер. Заголовок CORS регулирует доступ к ответу в браузере; кассиром он не работает.
История публикаций W3C ведёт от проектов 2007 года к объявлению рекомендации в 2014 году и фиксирует формальный отзыв этого документа в 2020 году. Исторический механизм решал конкретную задачу: ресурс указывает, какие другие сайты вправе читать его ответ, а браузер обеспечивает исполнение. График получает цифры соседа. Ключи от всего дома остаются у хозяина.
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров





