Данный раздел предназначен для более тонкой настройки работы CDN-сети. После создания ресурса на странице его редактирования появится вкладка "Правила". В данной вкладке можно редактировать базовое правило (которое распространяется на весь ресурс), либо создавать индивидуальные правила для какого-либо раздела/пути. Правила позволяют управлять заголовками, кэшированием, CORS и авторизацией.
Укажите путь до директории или к конкретному файлу, к которому нужно применить данное правило.
В этом разделе Вы можете указать специальные заголовки, которые требуется добавить при обращении к источнику данных (вид "to origin"), либо при раздаче контента конечным пользователям (вид "to customer").
В этом разделе Вы можете указать допустимые таймауты при обращении узлов CDN к вашему ориджину. В случае, если фактические значения начнут превышать допустимые — произойдёт переключение на другой источник контента, указанный в разделе Источник данных.
В этом разделе Вы можете указать время кэширования в зависимости от кода ответа (2xx, 3xx, 4xx, 5xx), установить игнорирование заголовков управления кэшированием ("Expires" и "Cache-Control"), а также включить учет query string при кэшировании.
В определённых случаях обращение к контенту, размещённому в сети CDN, расценивается браузером как кросс-доменный запрос и блокируется. В первую очередь это касается шрифтов. Проблема решается выставлением заголовков CORS (Cross-Origin Resource Sharing) для кэшируемых объектов.
Вариантов два:
Механизм проверки CORS, предоставляемый для конфигурации, основывается на работе нашего собственного модуля. Его функциональность базируется на рекомендациях W3C.
Основные принципы работы модуля:
При включенном CORS заголовки Access-Control-* от ориджина не учитываются ни при каких условиях и удаляются из ответа.
Запрос без заголовка Origin не является кросс-ресурсным и заголовки Access-Control-* клиенту не передаются.
Заголовки Access-Control-Request-* не добавляются нашим модулем ни при каких условиях, т.к. это входящие заголовки запроса, формируемые браузером, как и Origin.
При наличии заголовка Origin его содержимое проверяется на соответствие с заданным пользователем. В случае отсутствия ограничений заголовок Access-Control-Allow-Origin ответа будет содержать "*", в случае наличия ограничений и попадания Origin в список разрешенных ACAO будет содержать http(s?)://${http_origin}, в любом другом случае ответ заголовков Access-Control-* содержать не будет.
Заголовок Access-Control-Expose-Headers добавляется в том случае, если такие заголовки заданы пользователем. По умолчанию мы проставляем разрешение на доступ к Content-Range для работы range-запросов (для плееров на JS).
Заголовок Access-Control-Allow-Credentials (ACAC) выставляется в соответствии с заданным пользователем.
Заголовки Access-Control-Allow-Methods, Access-Control-Allow-Headers и Access-Control-Max-Age проставляются только в ответе на запрос с методом OPTIONS, который обрабатывается локально и на ориджин не передается.
Заголовок Access-Control-Allow-Methods выставляется равным содержимому заголовка Access-Control-Request-Method в случае его наличия и попадания его содержимого в список простых запросов (GET, HEAD, POST), либо в список, заданный пользователем. Если метод не попадает в список разрешенных - ответ заголовков Access-Control-* содержать не будет. В случае отсутствия в запросе Access-Control-Request-Method Access-Control-Allow-Methods не выставляется.
Access-Control-Allow-Headers выставляется равным содержимому заголовка Access-Control-Request-Headers в случае его наличия, наличия заголовка запроса Access-Control-Request-Method и попадания всех заголовков в список простых (Accept, Accept-Language, Content-Type, Content-Language) либо в список, заданный пользователем. Если хотя бы один заголовок не попадает в список разрешенных - ответ заголовков Access-Control-* содержать не будет. В случае отсутствия в запросе Access-Control-Request-Method и Access-Control-Request-Headers Access-Control-Allow-Headers не выставляется.
Заголовок Access-Control-Max-Age выставляется в соответствии с заданным пользователем, по умолчанию не выставляется.
Дополнительные заголовки ответа, определяемые клиентом, добавляются/переопределяются после отработки модуля CORS и, например, Access-Control-Alow-Origin: * в секции заголовков будет добавлен вне зависимости от результатов работы модуля CORS.
По умолчанию проверка CORS активна. В случае отключения CORS авторизации все preflight запросы будут перенаправляться на ваш ориджин. Заголовки, описанные выше и выставленные на ориджине, не будут затронуты и передадутся конечным пользователям без изменений.
Вы можете внести корректировки в работу модуля, задав следующие параметры:
Разрешенные домены (по умолчанию не проверяется, все домены разрешены)
Значение можно задавать одним из следующих способов:
Безопасные заголовки запроса
По умолчанию разрешены Cache-Control, Content-Language, Content-Type, Expires, Last-Modified, Pragma. Вы можете дополнить этот список своими заголовками.
Заголовки, доступные API верхнего уровня (Expose Headers)
По умолчанию разрешены Cache-Control, Content-Language, Content-Type, Expires, Last-Modified, Pragma. Вы можете дополнить этот список своими заголовками.
Безопасные методы
По умолчанию разрешены GET, HEAD, POST. Вы можете дополнить этот список своими методами.
Заголовок Access-Control-Allow-Credentials
Cookies, сессионность, авторизация несовместимы с кеширующими сервисами ввиду логики своей работы. Однако, если у Вас возникает необходимость выставить заголовок Access-Control-Allow-Credentials, Вы можете сделать это.
Время жизни ответа Preflight запроса
Время, в течение которого результат ответа Preflight запроса считается актуальным.
Внимание!
Вне зависимости от включения/выключения CORS авторизации и результатов ее работы Вы можете вручную переопределить любой из заголовков в ответе конечным пользователям. Для этого укажите его название и желаемое значение в секции "Заголовки". Значение авторизационных заголовков будет заменено на указанное вами после этапа проверки CORS.