Подсветка кода не сработала из-за CDN bunny.net

Кто-то пожаловался, что на их сайте не работает подсветка синтаксиса. Я воспроизвёл эту проблему на своём сайте. Похоже, что проблема в том, что CDN блокируется политикой CORS:

image

Я исправил проблему, добавив js в настройку «добавить заголовок CORS» на странице CORS:

Если эта опция включена, bunny.net автоматически добавляет заголовки CORS (Cross-Origin Resource Sharing) ко всем запросам к файлам с расширениями из списка.

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

По-моему, в настройках bunny была (или раньше была) опция, добавляющая JS в CORS? У меня (по какой-то причине) JS добавлен в CORS для всех ресурсов bunny.net, хотя я не помню, чтобы делал это сам. Это относительно новый сайт?

Сайт, где они впервые это заметили, существует уже давно (не помню, когда они начали использовать bunny).

Не уверен, изменился ли bunny или что-то в включённом скрипте.

Изменение, которое сделало это заметным, скорее всего, было внесено в DEV: Modernise highlightjs loading (#24197) · discourse/discourse@0878dde · GitHub, где highlightjs перешёл на загрузку через нативный import(), что требует наличия заголовков CORS при запросах к CDN.

Но даже до этого изменения у вас, вероятно, уже возникали проблемы с такими вещами, как пользовательские шрифты (которые также требуют заголовков CORS для межсайтовых запросов).

В теории сам Discourse должен добавлять заголовок CORS в ответы от CDN. Если этого не происходит, это, скорее всего, означает, что ваш CDN не указывает имя хоста CDN (то есть не имя хоста форума) в заголовке Host или X-Forwarded-Host.

Тем не менее, добавление заголовков через конфигурацию CDN, вероятно, даёт тот же результат :ok_hand: