Django admin Ресурсная политика COEP ERR_BLOCKED_BY_RESPONSE

Статические файлы моего сайта Django admin находятся на S3 bucket (DigitalOcean Spaces фактически) и в консоли я получаю ERR_BLOCKED_BY_RESPONSE.NotSameOriginAfterDefaultedToSameOriginByCoep 200

В сетевой панели все статические файлы считаются сторонними и блокируются по этой причине (не одинаковое происхождение)

Ответ на любой из этих файлов содержит ошибку not set cross-origin-resource-policy, которая гласит:

Чтобы использовать этот ресурс из другого источника, сервер должен указать кросс-оригинальную политику ресурса в заголовках ответа.

Что я пробовал :

  • После сообщения об ошибке я попытался установить заголовок ответа на ресурсах, что-то вроде Cross-Origin-Resource-Policy: cross-origin. Но в DigitalOcean Spaces я не могу установить заголовки, кроме Content-Type, Cache-Control, Content-Encoding, Content-Disposition и пользовательских x-amz-meta- заголовков.
  • Я попытался расширить шаблон Django admin/base.html, продублировать несколько тегов link и вручную установить для них атрибут crossorigin. Таким образом, ресурсы запрашиваются дважды, один запрос блокируется, как и раньше, а другой работает. Разница в заголовках только в том, что установлен Origin. Есть ли способ сказать Django добавить атрибут crossorigin ко всем link и script и img тегам шаблонов администратора Django ? Я попытался удалить заголовки
  • и
  • на ingress loadbalancer, которые, как я предполагаю, вызывают блокировку, установив их в Cross-Origin-Opener-Policy. Хотя я думаю, что это должно работать с политикой, это изменение не повлияло на проблему, которую я не понимаю.Cross-Origin-Embeder-Policy unsafe-none

    Что я не пробовал:

    • Я нашел этот учебник, объясняющий, как устанавливать пользовательские заголовки на S3 Responses. Идея заключается в том, чтобы иметь функцию Lambda перед модификацией заголовка x-amz- в стандартный заголовок. Не уверен, что смогу легко повторить это с помощью DigitalOcean Functions.

    Мой обходной путь:

    • Уродливый хак заключается в дублировании всех шаблонов администраторов Django и ручном добавлении атрибута crossorigin там, где это необходимо.

    Я не знаю, откуда это берется, несколько недель назад все было хорошо. Любая помощь приветствуется.

    В HTTP 2+ более эффективно обслуживать ресурсы из одного домена, так как они могут обслуживаться через одно соединение. Большинство сайтов должны делать это. Whitenoise - популярное решение для этого с минимальной конфигурацией: https://whitenoise.evans.io/en/stable/

    Это решает проблему.

    Спасибо Адаму Джонсону из djangoproject.

    Вернуться на верх