Известные ограничения
Двойная сборка
⚠️ В случае, если ваши SSR (динамические) страницы ссылаются на статические
файлы .js или .css, и любой из этих ресурсов изменяется, вам, возможно,
придется запустить команду astro build два раза подряд (Astro-Shield
выдаст предупреждающее сообщение, если это потребуется).
Мы можем попытаться улучшить это в будущем, но существуют некоторые технические проблемы, которые затрудняют решение этой задачи элегантным способом.
Отсутствие File Watcher
На данный момент Astro-Shield не предоставляет логику наблюдателя за файлами, которая бы автоматически регенерировала хеши SRI при изменении файлов.
Это означает, что если вы запускаете Astro в режиме разработки (astro dev),
вам, возможно, придется вручную запускать astro build, чтобы избежать устаревших
хешей SRI, которые могут нарушить работу локальной версии сайта.
Ограничения спецификаций SRI и CSP
Когда скрипт загружается с помощью статического импорта (например,
import { foo } from 'https://origin.com/script.js'), а не напрямую
включается с помощью тега <script> (например,
<script type="module" src="https://origin.com/script.js"></script>), наличие
его хеша в директиве script-src CSP недостаточно для того, чтобы браузер
принял его (браузер также требует, чтобы вы предоставили информацию, которая
связывает хеш с конкретным ресурсом).
Это само по себе не является ограничением Astro-Shield, а скорее ограничением комбинации текущих спецификаций SRI и CSP.
Из-за этого, на данный момент, рекомендуется добавить 'self' в директиву
script-src (Astro-Shield делает это за вас).