в блоке env: в моём файле yml для довольно стандартной мультисайтовой конфигурации, все CDN-URL-адреса отклоняются браузером с ошибкой CSP.
content security policy script src утверждает: «Дополнительные разрешённые источники скриптов. По умолчанию включены текущий хост и CDN. См. Смягчение атак XSS с помощью Content Security Policy», но когда я определяю его (или добавляю/удаляю из discourse.conf и выполняю sv restart unicorn), получаю следующее:
Даже при установке content security policy report only в true сайт всё равно не загружается.
Кажется, чтобы браузер загрузил ресурсы, необходимо либо отключить content_security_policy, либо добавить URL CDN в content security policy script src.
URL-адреса CDN должны по умолчанию вычисляться и включаться в CSP. Не могли бы вы также предоставить (или попробовать сравнить) фактическую CSP, отправляемую в заголовке, и источник заблокированных ресурсов?
А вот URL одного из ресурсов, который не загружается: https://lcsupport-92e2.kxcdn.com/brotli_asset/preload-store-d32dcf974dddcac742f8a7a6aa7fcd686185920b201029d0ecb2b85527ef9034.js
https://abedmulti-92e2.kxcdn.com/uploads/assets/
https://abedmulti-92e2.kxcdn.com/uploads/brotli_asset/
# т.е. DISCOURSE_S3_CDN_URL + /brotli_asset/
Но фактический адрес:
https://lcsupport-92e2.kxcdn.com/brotli_asset/preload-store-d32dcf974dddcac742f8a7a6aa7fcd686185920b201029d0ecb2b85527ef9034.js
# т.е. DISCOURSE_CDN_URL + /brotli_asset/...
Соответствующий код CSP:
Мы приоритизируем использование DISCOURSE_S3_CDN_URL для ассетов, когда оно доступно. Это соответствует генерации URL ассетов CDN.
@pfaffman Возвращает ли GlobalSetting.use_s3? значение true для вашего сайта?
Мне интересно, не нужно ли здесь добавить дополнительную проверку GlobalSetting.use_s3?. Обязательно ли наличие GlobalSetting.s3_cdn_url подразумевает GlobalSetting.use_s3?? Сейчас я немного запутался в генерации ассетов / S3 CDN Не мог бы кто-то, кто лучше знаком с этим, тоже взглянуть? Спасибо!