CDN

CDN (Content Delivery Network) – облачное решение для ускоренной доставки данных пользователям по всему миру. В этой статье мы подробно расскажем о CDN для сайта – что это такое, в чем особенности решения и как его использовать.

Итак, простыми словами CDN – это сеть серверов, которая помогает быстрее доставлять сайты и приложения пользователям, распределяя данные по разным регионам. Серверы кэшируют данные и отдают их с ближайшего к пользователю узла, снижая задержку, уменьшая нагрузку на основной сервер и повышая отказоустойчивость системы.

Сеть CDN включает 207 точек на 5 континентах, что обеспечивает максимально быструю и стабильную доставку контента для пользователей по всему миру.

Через CDN-сервисы можно распространять различные типы данных: изображения, видео, скрипты, стили, документы и другой статический контент.

CDN хорошо подойдет для следующих задач:

  • Ускорение загрузки сайтов и веб-приложений за счёт кэширования статического контента
  • Стабильная доставка видео и потокового мультимедиа
  • Защита от DDoS-атак и снижение нагрузки на основной сервер
  • Оптимизация глобального доступа к контенту для распределённой аудитории
  • Ускорение доступа к объектному хранилищу S3

CDN легко подключается к существующей инфраструктуре и поддерживает интеграцию с популярными CMS и фреймворками. Это позволяет быстро настроить доставку контента и обеспечить пользователям по всему миру стабильный и быстрый доступ к вашим ресурсам.

Точки присутствия CDN

Россия и СНГ
  • Москва
  • Санкт-Петербург
  • Владивосток
  • Екатеринбург
  • Иркутск
  • Калининград
  • Краснодар
  • Красноярск
  • Махачкала
  • Нижний Новгород
  • Новосибирск
  • Норильск
  • Омск
  • Петропавловск-Камчатский
  • Ростов-на-Дону
  • Самара
  • Симферополь
  • Ставрополь
  • Тюмень
  • Уфа
  • Хабаровск
  • Химки
  • Чита
  • Ереван
  • Минск
  • Тбилиси
  • Акколь
  • Алматы
  • Астана
  • Караганда
  • Костанай
  • Бишкек
  • Кишинев
  • Ташкент

Азия и др.
  • Гонконг
  • Баян-Нур
  • Вэньчжоу
  • Гуанчжоу
  • Гуйян
  • Далянь
  • Иньчуань
  • Ичунь
  • Ланьчжоу
  • Лохэ
  • Лхаса
  • Ляньюньган
  • Мэйшань
  • Нанкин
  • Наньнин
  • Наньчан
  • Нинбо
  • Пекин
  • Сиань
  • Синин
  • Синьчжоу
  • Сыпин
  • Сюйчжоу
  • Сянтань
  • Сянфань
  • Сяньян
  • Сяогань
  • Тайчжоу
  • Тайюань
  • Тунляо
  • Тяньцзинь
  • Тяньшуй
  • Урумчи
  • Ухань
  • Фошань
  • Фучжоу
  • Хайкоу
  • Ханчжоу
  • Ханьдань
  • Харбин
  • Хуанган
  • Хух-Хото
  • Хэфэй
  • Цзеян
  • Цзинань
  • Цзиньчжоу
  • Цзыбо
  • Цзясин
  • Циндао
  • Циньхуандао
  • Цюаньчжоу
  • Чандэ
  • Чанчунь
  • Чанша
  • Чжунвэй
  • Чжухай
  • Чжэнчжоу
  • Чунцин
  • Чэнду
  • Шанхай
  • Шаосин
  • Шицзячжуан
  • Шэньчжэнь
  • Шэньян
  • Юйси
  • Янчжоу
  • Бангалор
  • Дели
  • Патан
  • Хайдарабад
  • Ченнаи
  • Алжир
  • Луанда
  • Дакка
  • Аскар
  • Бандар-Сери-Бегаван
  • Ханой
  • Хошимин
  • Джибути
  • Каир
  • Тель-Авив
  • Бали
  • Бандунг
  • Макасар
  • Медан
  • Сурабая
  • Амман
  • Багдад
  • Тегеран
  • Пномпень
  • Доха
  • Никосия
  • Эль-Кувейт
  • Вьентьян
  • Бейрут
  • Порт Луис
  • Антананариву
  • Макао
  • Куала-Лумпур
  • Куала-Селангор
  • Штат Сабах
  • Улан Батор
  • Мандалай
  • Янгон
  • Лалитпур
  • Абу-Даби
  • Аль-Фуджейра
  • Маскат
  • Сеул
  • Джидда
  • Эр-Рияд
  • Сингапур
  • Бангкок
  • Гаосюн
  • Тайбэй
  • Коломбо
  • Сува
  • Кесон
  • Себу
  • Йоханнесбург
  • Кейптаун
  • Осака
  • Токио
  • Сидней
  • Мельбурн

Европа
  • Вена
  • Брюссель
  • Лондон
  • Франкфурт-на-Майне
  • Дублин
  • Мадрид
  • Милан
  • Амстердам
  • Варшава
  • Лиссабон
  • Бухарест
  • Анкара
  • Стамбул
  • Марсель
  • Париж
  • Экс-ан-Прованс
  • Прага
  • Стокгольм
США
  • Атланта
  • Ашберн
  • Бостон
  • Вашингтон
  • Даллас
  • Денвер
  • Лос-Анджелес
  • Майами
  • Нью-Йорк
  • Сан-Хосе
  • Сиэтл
  • Чикаго
  • Монреаль
  • Торонто

Южная Америка
  • Буэнос-Айрес
  • Кордова
  • Жуазейру ду Норти
  • Рио-де-Жанейро
  • Сан-Паулу
  • Гватемала
  • Барранкилья
  • Богота
  • Сан-Хосе
  • Гавана
  • Панама
  • Асунсьон
  • Ла-Либертад
  • Лима
  • Сантьяго
  • Гуаяс

Тарификация

Тарификация сервиса осуществляется за исходящий сетевой трафик от узлов CDN. 

Тарификация CDN

Списания за трафик происходят ежесуточно за фактический объем переданных данных.

Особенности тарификации:

  • Стоимость услуги "CDN-ресурс" которая отображается в разделе “Управление услугами”, обновляется 3 раза в сутки в зависимости от количества использованного трафика
  • Раз в 15 минут происходит проверка остатка средств на балансе. Если на аккаунте недостаточно денег для оплаты использованного CDN трафика, то услуга CDN приостанавливает работу и получение контента через домен для раздачи контента станет невозможным.
  • Раз в 2 минуты проверяется баланс, если денег хватает на оплату использованного трафика + 10Гб для каждого CDN-ресурса, то работа CDN возобновляется.

По факту остановки работы сервиса и его возобновления пользователь получает уведомления.

Создание CDN

Чтобы создать сеть доставки контента, перейдите в раздел “Облако” и нажмите “Создать”, в появившемся меню выберите CDN:

Откроется страница создания:

Создание CDN в Beget

По умолчанию имя ресурса генерируется автоматически, при желании вы можете изменить его – указанное название будет использоваться при отображении в списке CDN.

Обязательным параметром при создании является источник контента, для указания доступны:

  1. S3-бакет в облачном объектном хранилище Beget. Обратите внимание, что для корректной работы CDN запрашиваемые из бакета файлы должны быть публично доступны.
  2. Доменное имя – вы можете выбрать добавленный на аккаунт домен в выпадающем меню либо ввести сторонний домен самостоятельно.
  3. IP-адрес – белый IP-адрес сервера-источника.
Обратите внимание!
Изменить источник после создания ресурса нельзя.

По умолчанию для CDN генерируется технический домен в зоне .begetcdn.cloud. В поле “Домен для раздачи контента” вы можете указать дополнительный поддомен для CDN-ресурса. 

Для добавления своего поддомена он должен быть добавлен в панель управления в разделе “Домены и поддомены”, а также делегирован NS-серверам Beget.

После создания первого CDN-ресурса в разделе “Облако” появится раздел CDN:

CDN в Облаке Beget

Внутри раздела будут отображены созданные CDN, а также их статус, прикрепленные домены, источники и статистика по трафику за месяц:

CDN-ресурсы в Beget

Управление CDN-ресурсом

Для управления ресурсом нажмите на его карточку в списке CDN-ресурсов. Откроется страница с подробной информацией о нем:

Управление CDN в Beget

В данном разделе вы можете увидеть краткую статистику по использованию CDN-ресурса, управлять кэшем, а также перейти к настройкам.

При нажатии на кнопку меню в правом верхнем углу вы можете:

  • Очистить кэш ресурса – доступна как полная, так и выборочная очистка для определенного шаблона, например, если необходимо очистить кэш только для css-файлов по пути, который начинается со static, можно указать шаблон /static/*.css.
  • Предзагрузить кэш – позволяет отправить запрос на загрузку кэша в CDN для определенных файлов. Обратите внимание, что данная опция может вызвать пик нагрузки на исходный сервер, поскольку все узлы CDN будут выполнять запросы к источнику. Указывать необходимо относительный путь до файла, например, если на исходном сервере файл доступен по адресу betutorial.ru/images/cat.jpg, указывать необходимо только images/cat.jpg.
  • Удалить ресурс.

Для переименования ресурса нажмите на текущее название, введите новое и подтвердите изменения:

Переименовать CDN в Beget

На графиках статистики можно увидеть информацию об использованном трафике и количестве запросов за месяц, неделю или год:

Статистика CDN в Beget

Статистика

При нажатии на кнопку “Статистика” откроется страница с более подробной статистикой о работе сервиса. Помимо графика расхода трафика, здесь также доступна почасовая информация о количестве запросов:

Количество запросов в CDN

И скорости исходящего трафика:

Статистика по трафику CDN

Настройки ресурса

В разделе “Настройки CDN” вы можете добавить/изменить поддомен для раздачи контента, а также изменить настройки CDN.

Обратите внимание!
Для применения некоторых настроек может потребоваться несколько минут.
Настройка CDN в Beget

Поддомен для раздача контента

Поддомен CDN в Beget

В этом блоке вы можете добавить, удалить или изменить домен, который используется для раздачи контента. Бесплатный технический поддомен удалить или изменить нельзя.

Для добавления своего поддомена он должен быть добавлен в панель управления в разделе “Домены и поддомены”, а также делегирован NS-серверам Beget.

Настройки кеширования

В этом блоке вы можете изменить настройки кэширования CDN.

Настройки кэширования CDN в Beget

Кэширование на CDN

Кэширование на CDN

Опция “Кэширование на CDN” позволяет включить/отключить кэширование контента на CDN-серверах, а также задать время в секундах, в течение которого будет храниться кэш.

Минимальное значение времени кэширования: 1 секунда

Максимальное значение времени кэширования: 31536000 секунд

По умолчанию кэширование на CDN включено, время кэширования – 345900 секунд (~96 часов).

Кэширование в браузере

Кэширование в браузере

Опция “Кэширование в браузере” позволяет задать время кэширования контента в браузере конечного пользователя через установку заголовка ответа Cache-Control в секундах.

Минимальное значение времени кэширования: 1 секунда

Максимальное значение времени кэширования: 31536000 секунд

По умолчанию кэширование в браузере отключено.

Всегда онлайн

Сохранение контента из кэша

Опция “Всегда онлайн” разрешает отдавать пользователю последнюю сохраненную копию контента из кэша CDN, даже если источник недоступен и время кэширования истекло.

Доступные типы ошибок:

  • 403
  • 404
  • 429
  • 500
  • 502
  • 503
  • 504
  • INVALID_HEADER
  • TIMEOUT
  • CACHE_UPDATING

По умолчанию опция “Всегда онлайн” включена для следующих типов ошибок:

  • 500
  • 502
  • 503
  • 504
  • TIMEOUT
  • CACHE_UPDATING

Следовать редиректу источника

Следование редиректу

Опция “Следовать редиректу источника” позволяет CDN автоматически получать контент из нового адреса в случаях, когда сервер-источник возвращает редирект.

Доступны следующие виды редиректов:

  • 301
  • 302
  • 303
  • 307
  • 308

По умолчанию опция включена для всех видов редиректов.

Игнорирование Set-cookie

Опция “Игнорировать Set-Cookie” разрешает CDN кэшировать контент с заголовком Set-Cookie.

Если параметр выключен, файлы с HTTP-заголовком Set-Cookie не кэшируются. В результате каждый новый запрос пользователя проксируется на источник, а не отдается из кэша. 

Обратите внимание!
Включение этой опции может привести к тому, что в кэш CDN попадут персонализированные страницы, сгенерированные на основе заголовка Set-Cookie.

По умолчанию опция "Set-Cookie" выключена.

Игнорировать параметры запроса

Игнорировать параметры запроса

Опция “Игнорировать параметры запроса” позволяет не учитывать параметры запроса в URL при кэшировании.

С выключенным параметром CDN кэширует один и тот же файл с разными параметрами запросов как уникальные файлы. В результате каждый новый запрос пользователя проксируется на источник, а не отдается из кэша. Это снижает процент кэшированного трафика и создает нагрузку на источник.

По умолчанию опция "Игнорировать параметры запроса" выключена.

Настройки безопасности

В этом блоке вы можете активировать или деактивировать различные опции, отвечающие за безопасность.

Настройка безопасности CDN в Beget

Редирект с HTTP на HTTPS

Редирект с http на https в CDN

Опция “Редирект с HTTP на HTTPS” позволяет включить автоматическое перенаправление на защищенный протокол HTTPS, если клиент обращается к CDN по HTTP.

По умолчанию опция "Редирект с HTTP на HTTPS" выключена.

Secure Token

Secure Token в CDN

Опция “Secure Token” позволяет включить механизм защиты контента с помощью секретного ключа. 

После включения и настройки параметра получить доступ к контенту возможно только при указании действительной подписи в URL. Также можно настроить ограничение доступа по IP-адресу и срок действия ссылки.

При включении параметра вам необходимо указать токен (любой набор символов длиной от 6 до 32 символов). Также вы можете активировать чекбокс “Включить IP-адрес конечного пользователя в генерацию защищенного токена”, если хотите, чтобы контент был доступен только с одного IP, поставьте в чекбоксе галочку (доверенный IP вы укажете позже).

Далее необходимо добавить на свой сервер-источник скрипт, который генерирует защищенные ссылки на контент.

Получившиеся ссылки должны иметь вид:

http://cdn.example.com/photo.jpeg?md5=DMF1ucDxtHCxwYQ&expires=2147483647

Где:

  • http://cdn.example.com/photo.jpeg – путь к файлу.
  • DMF1ucDxtHCxwYQ – результат хэш-функции MD5(String), где String – параметр, полученный слиянием элементов: <время истечения ссылки><путь к файлу><доверенный IP> <токен, который вы указали при включении этого параметра>.
  • 2147483647 – момент времени, после которого ссылка будет считаться недействительной, в формате UNIX timestamp.

После добавления скрипта вам необходимо продумать способ передачи защищенных ссылок конечным пользователям. Вы можете это делать как вручную, так и интегрировать работу скрипта в CMS вашего сайта.

Шаблон скрипта для генерации ссылки с secure token на PHP с ограничением доступа по IP
<?php
$secret = 'secret_key';
$ip = '1.2.3.4';
$path = '/live/133529_2/chunklist.m3u8';
$expires = time() + 10000;
$link = "$expires$path$ip $secret";
$md5 = md5($link, true);
$md5 = base64_encode($md5);
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);
$url = "http://cdn.site.com{$path}?md5={$md5}&expires={$expires}";
echo $url;
echo "\n";

Где:

  • $secret – токен;
  • $path – путь к файлу;
  • $ip – IP-адрес, которому разрешено получить контент;
  • $expires – момент времени, после которого ссылка будет считаться недействительной, в формате UNIX timestamp;
  • $url – итоговая ссылка на файл.

Шаблон скрипта для генерации ссылки с secure token на PHP без ограничения доступа по IP
<?php
$secret = 'secret_key';
$path = '/live/133529_2/chunklist.m3u8';
$expires = time() + 10000;
$link = "$expires$path $secret";
$md5 = md5($link, true);
$md5 = base64_encode($md5);
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);
$url = "http://cdn.site.com{$path}?md5={$md5}&expires={$expires}";
echo $url;
echo "\n";

Где:

  • $secret – токен;
  • $path – путь к файлу;
  • $ip – IP-адрес, которому разрешено получить контент;
  • $expires – момент времени, после которого ссылка будет считаться недействительной, в формате UNIX timestamp;
  • $url – итоговая ссылка на файл.
Шаблон скрипта для генерации ссылки с secure token на Python с ограничением доступа по IP
import base64 
from hashlib import md 
from time import time 
ip = '1.2.3.4' 
secret = 'secret_key' 
stream_address = '133529_2' 
path = f'/live/{stream_address}/playlist.m3u8' 
expires = int(time()) + 100000 
token = base64.encodebytes(md5(f"{expires}{path}{ip}
{secret}".encode()).digest()).decode().replace("\n", "").replace("+", "-").replace("/", "_").replace("=", "") 
secured_url = f"https://cdn.site.com{path}?md5={token}&expires={expires}" 
print(secured_url)

Где:

  • secret – токен;
  • path – путь к файлу;
  • ip – IP-адрес, которому разрешено получить контент;
  • expires – момент времени, после которого ссылка будет считаться недействительной, в формате UNIX timestamp;
  • secured_url – итоговая ссылка на файл.
Шаблон скрипта для генерации ссылки с secure token на Python без ограничения доступа по IP
import base64 
from hashlib import md5 
from time import time 
secret = 'secret_key' 
stream_address = '133529_2' 
path = f'/live/{stream_address}/playlist.m3u8' 
expires = int(time()) + 100000 
token = base64.encodebytes(md5(f"{expires}{path}
{secret}".encode()).digest()).decode().replace("\n", "").replace("+", "-").replace("/", "_").replace("=", "") 
secured_url = f"https://cdn.site.com{path}?md5={token}&expires={expires}" 
print(secured_url)

Где:

  • secret – токен;
  • path – путь к файлу;
  • ip – IP-адрес, которому разрешено получить контент;
  • expires – момент времени, после которого ссылка будет считаться недействительной, в формате UNIX timestamp;
  • secured_url – итоговая ссылка на файл.

Настройка доступа по доменам

Доступ к доменам в CDN

Опция “Настройка доступа по доменам” позволяет настроить доступ к контенту по домену на основании заголовка Referer с целью предотвратить использование на сторонних ресурсах.

При включении параметра доступны две политики доступа:

  • Разрешающая – разрешает доступ к контенту всем доменам, кроме указанных в поле.
  • Запрещающая – запрещает доступ к контенту всем доменам, кроме указанных в поле.

В обоих случаях вы можете указать как сам домен, так и wildcard-поддомен (*.domain.ru). При добавлении wildcard-поддомена необходимо добавить и основной домен (т. е. и *.domain.ru, и domain.ru).

По умолчанию опция "Настройка доступа по доменам" выключена.

Настройка доступа по IP

Доступ по IP в CDN

Опция “Настройка доступа по IP” позволяет ограничивать доступ к CDN-контенту по указанному списку IP-адресов.

При включении параметра доступны две политики доступа:

  • Разрешающая – разрешает доступ к контенту всем IP-адресам, кроме указанных в поле.
  • Запрещающая – запрещает доступ к контенту всем IP-адресам, кроме указанных в поле.

Возможно указание IPv4, а также как конкретных IP, так и подсетей.

По умолчанию опция "Настройка доступа по IP" выключена.

Политика доступа по клиентским приложениям

Настройка доступа приложений

Опция “Политика доступа по клиентским приложениям” позволяет ограничивать доступ к CDN-контенту по user-agent (браузеру, приложению или устройству). 

При включении параметра доступны две политики доступа:

  • Разрешающая – разрешает доступ к контенту всем клиентским приложениям, кроме указанных в поле.
  • Запрещающая – запрещает доступ к контенту всем клиентским приложениям, кроме указанных в поле.

В поле User-Agent значением может быть:

  • Строка значения user agent. Например, User agent value.
  • Регулярное выражение. Введите регулярное выражение, начинающееся с ~. Например, ~/Safari[ /]+([0-9\.]+)/i. Проверьте валидность вашего выражения с помощью сервиса Regex

По умолчанию опция "Политика доступа по клиентским приложениям" выключена.

Разрешенные HTTP-методы

Разрешенные http-методы

Опция “Разрешенные HTTP-методы” позволяет указать HTTP-методы, которые разрешены для обращения к контенту.

Для указания доступны следующие методы:

  • GET
  • HEAD
  • POST
  • PUT
  • PATCH
  • DELETE
  • OPTIONS

По умолчанию опция "Разрешенные HTTP-методы" выключена.

Контент и подключение

В этом блоке вы можете активировать или деактивировать опции, отвечающие за подключение CDN и отдачу контента.

Подключение CDN в Beget

HTTP/3

http/3 в CDN

Опция “HTTP/3” позволяет включить использование протокола HTTP/3 для быстрой и надежной передачи данных.

Сжатие Gzip

Сжатие Gzip в CDN

Опция “Сжатие Gzip” включает автоматическое сжатие статического контента на стороне CDN. При включении вы можете указать поддерживаемые типы данных, которые необходимо сжимать.

Степень сжатия: от 70% до 90%.

Минимальный размер файла для сжатия: 128 байт.

Поддерживаемые типы данных:

  • application/dash+xml
  • application/javascript
  • application/json
  • application/vnd.apple.mpegurl
  • application/vnd.ms-fontobject
  • application/vnd.ms-sstr+xml
  • application/x-font-ttf
  • application/x-font-opentype
  • application/x-javascript
  • application/x-mpegURL
  • application/x-subrip
  • application/xml
  • application/xml+rss
  • font/woff
  • font/woff2
  • image/svg+xml
  • text/css
  • text/html
  • text/javascript
  • text/plain
  • text/vtt
  • text/xml

Важно: text/html выбран по умолчанию и не может быть удален.

Оптимизация доставки больших файлов

Оптимизация доставки больших файлов

Опция “Оптимизация доставки больших файлов” позволяет ускорить кэширование файлов больших размеров. Файл будет запрашиваться с вашего источника частями по 10 Мб и храниться в кэше CDN.

Для работы ваш источник должен поддерживать HTTP Range request.

Как это работает

При активации параметра CDN начинает делить файлы, запрашиваемые из источника, на части по 10 Мб и загружать их в кэш. Файл будет запрашиваться последовательно, по мере необходимости. Так, если пользователь запросит файл размером 30 ГБ, CDN будет передавать одну часть за другой по мере отдачи пользователю предыдущих частей.

Если пользователи одновременно запрашивают разные части одного файла, ближайший CDN-сервер, используя множество одновременных потоков, загрузит с источника эти части файла в кэш и соберет их воедино.

HTTP-заголовки

В этом блоке вы можете активировать или деактивировать опции, позволяющие кастомизировать HTTP-заголовки ответов и запросов к/от CDN.

http-заголовки в CDN

Добавить заголовки запросов

Добавить заголовки запросов в CDN

Опция “Добавить заголовки запросов” позволяет задать дополнительные HTTP-заголовки, которые будет использовать CDN в запросах к серверу-источнику. 

После активации параметра вы сможете задать заголовки в формате “Название заголовка Значение заголовка”.

  • Для поля “Название заголовка” допустимы латинские буквы (A-Z, a-z), цифры (0-9), подчеркивание (_) и дефис (-).
  • Для поля “Значение заголовка” допустимы латинские буквы (A-Z, a-z), цифры (0-9), подчеркивание (_), точка (.), слеш (/), двоеточие (:), дефис (-), равно (=), пробел. Значение заголовка не может начинаться или заканчиваться пробелами. Между символами можно ввести только один пробел. Максимальная длина значения – 512 символов.

Максимальное количество заголовков – 50.

По умолчанию опция "Добавить заголовки запросов" выключена.

Включить поддержку заголовка CORS

Поддержка заголовков CORS

Этот параметр позволяет включить автоматическое добавление заголовка Access-Control-Allow-Origin к ответам CDN, чтобы разрешить кросс-доменные запросы к содержимому.

Заголовок ответа Access-Control-Allow-Origin применяется в механизме Cross-Origin Resource Sharing (CORS), чтобы дать возможность браузеру пользователя получать разрешения на доступ к ресурсам домена, который отличается от того, с которого поступает запрос.

Этот параметр передает в ответе браузеру заголовок Access-Control-Allow-Origin и может использоваться:

  • Для защиты контента от загрузки на сторонних сайтах.
  • Для предотвращения появления ошибки “XMLHttpRequest cannot load http://domain.ru. No ’Access-Control-Allow-Origin’ header is present on the requested resource”, которая возникает при загрузке веб-шрифтов из кэша CDN-серверов в браузерах по умолчанию.
Как работает CORS

Ознакомиться подробнее с работой механизма кросс-доменных запросов вы можете в документации MDN, ниже приведена краткая информация.

Например, пользователь, находящийся на сайте http://domain1.com, открывает изображение, которое расположено на вашем сайте по адресу http://cdn-domain.com/image.jpg.

В таком случае браузер пользователя отправляет на сервер домена http://cdn-domain.com/image.jpg запрос вида:

GET /image HTTP/1.1
Host: domain2.com 
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20081130 Minefield/3.1b3pre 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip,deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Connection: keep-alive 
Referer: http://domain1.com/examples/access-control/test.html 
Origin: http://domain1.com

В запросе важным является заголовок Origin. Он сообщает серверу, что запрос отправлен с домена http://domain1.com.

Сервер домена http://cdn-domain.com/image.jpg учитывает заголовок Origin запроса и принимает запрос или отказывает в его обработке.

Если сервер принял запрос, в ответе браузеру будет отправлен заголовок Access-Control-Allow-Origin, который позволит браузеру отобразить изображение для пользователя сайта http://domain1.com.

Важно. Параметры заголовка (в примере ниже: «*») зависят от заданных настроек на сервере.

HTTP/1.1 200 OK
Date: Mon, 01 Dec 2020 00:23:53 GMT
Server: Apache/2.0.61
Access-Control-Allow-Origin: *
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/xml  
[XML Data]

Если сервер отказал в обработке запроса, ответ браузеру будет отправлен без заголовка Access-Control-Allow-Origin и браузер не отобразит изображение для пользователя.

Включив этот параметр, отображение контента будет разрешено для тех доменов, которые указаны в поле настройки параметра. В заголовке ответа передается домен, с которого пришел запрос. Если необходимо добавить wildcard, укажите также и сам домен, например, *.domain.com и domain.com.

Вы можете поставить галочку напротив пункта “Всегда добавлять заголовки в ответ от CDN независимо от кода ответа”. Тогда заголовок CORS будет добавляться при любых кодах ответа. 

Если не ставить галочку, заголовок будет добавляться только для ответов с кодами 200, 201, 204, 206, 301, 302, 303, 304, 307 или 308.

По умолчанию опция "Включить поддержку заголовка CORS" выключена.

Добавить заголовки ответов

http заголовки ответов

Опция “Добавить заголовки ответов” позволяет настроить дополнительные HTTP-заголовки, которые будут добавляться в ответ клиенту от CDN-сервера. В случае если такой заголовок есть в ответе сервера-источника, этот заголовок будет перезаписан значением, указанным в этом параметре.

После активации параметра вы сможете задать заголовки в формате “Название заголовка Значение заголовка”.

  • Для поля “Название заголовка” допустимы латинские буквы (A-Z, a-z), цифры (0-9), подчеркивание (_) и дефис (-).
  • Для поля “Значение заголовка” допустимы латинские буквы (A-Z, a-z), цифры (0-9), подчеркивание (_), точка (.), слеш (/), двоеточие (:), дефис (-), равно (=), пробел. Значение заголовка не может начинаться или заканчиваться пробелами. Между символами можно ввести только один пробел. Максимальная длина значения – 512 символов.

Максимальное количество заголовков – 50.

По умолчанию опция "Добавить заголовки ответов" выключена.

Скрыть заголовки ответов

Скрыть заголовки http ответов

Опция “Скрыть заголовки ответов” позволяет настроить список HTTP-заголовков, которые будут исключены из ответа клиенту от CDN-сервера.

После активации параметра будут доступны два варианта работы:

  • Скрывать все, кроме. Укажите, какие заголовки CDN-сервер включит в ответ. Все заголовки, кроме указанных, будут скрыты.
  • Скрывать только. Укажите, какие заголовки CDN-сервер скроет из ответа. Все заголовки, кроме указанных, будут переданы конечным пользователям.

Заголовки ответов могут состоять из латинских букв (a-z), цифр (0-9), дефиса (-) и нижних подчеркиваний (_).

Обратите внимание!
Существуют обязательные заголовки, которые нельзя скрыть из ответа: connection, content-length, content-type, server и date.

По умолчанию опция "Скрыть заголовки ответов" выключена.

Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить облачный CDN или другие наши продукты с коллегами по цеху и сотрудниками Beget – ждем вас в нашем сообществе в Telegram.

Рекомендуем изучить

Теги:

12
6041