Summary

  • Редакция проекта рабочей группы CDNI от 27 октября описывает ошибку на стыке с кешем: заголовок Access-Control-Allow-Origin: *, выданный разрешённому источнику, без корректного Vary может попасть к исключённому.
  • Проект уточняет и сам смысл CORS: соответствующий браузер решает, показывать ли полученный ответ скрипту другого источника; нижестоящий CDN всё равно выдаёт публичный ресурс.

У входа стоит внимательный робот. Он сверяет посетителя со списком и выдаёт браслет. Общая гардеробная тут же печатает такой же браслет человеку, которого в списке нет. Проверка у двери была верной, но её результат потерял адресата. В новой редакции проекта о метаданных CDNI роль браслета играет заголовок CORS со звёздочкой, а гардеробной — общий кеш.

Верхний CDN передаёт MI.CrossoriginPolicy нижнему через интерфейс метаданных RFC 8006. Нижний узел сравнивает Origin запроса со списком допустимых источников. При совпадении и включённом wildcard-return он может ответить Access-Control-Allow-Origin: *. При несовпадении соответствующего заголовка CORS не будет. Но звёздочка не сохраняет имя источника, который прошёл проверку.

Новый эксплуатационный раздел показывает следствие: если общий кеш переиспользует ответ со звёздочкой для запроса от исключённого источника, не различая нужные заголовки запроса через Vary, второй браузер увидит чужой пропуск. Проект требует создавать CORS-заголовки для каждого ответа, не вшивать их в сохранённое представление ресурса и перечислять влияющие заголовки запроса в Vary. Хранить страницу и хранить решение для конкретного посетителя — разные вещи.

Предыдущая редакция -12 определяла объекты настройки. Редакция -13 чётче формулирует предел их действия. Заголовки CORS инструктируют совместимый браузер о доступе скрипта другого источника к ответу. Нижний CDN и без них обслуживает общедоступный ресурс. Запросы, где браузер включает учётные данные режимом include, лежат за пределами этих объектов: для сочетания CORS с аутентификацией и авторизацией требуется дополнительное поведение.

Есть и задержка доставки самой политики. Верхний CDN может открыть ресурс раньше, чем MI.CrossoriginPolicy начнёт действовать в нижнем. В этот промежуток ресурс выдаётся без CORS-заголовков, и браузер не пропускает межисточниковый доступ скрипта. Новый раздел предлагает операторам считать действующую конфигурацию нижнего узла средствами RFC 8006 и сопоставить её с наблюдаемым ответом. Отдельного механизма мониторинга проект не вводит.

Страница IETF показывает редакцию -13 как проект рабочей группы CDNI на оценке IESG. Правильно написанный список гостей — лишь начало. Конечный браслет выдаёт вся цепочка доставки.